# syntax=docker/dockerfile:1.7 # Offline-friendly console CI runner image with pre-baked npm and Playwright caches (DEVOPS-CONSOLE-23-001) ARG BASE_IMAGE=node:20-bookworm-slim ARG APP_DIR=src/Web/StellaOps.Web ARG SOURCE_DATE_EPOCH=1704067200 FROM ${BASE_IMAGE} ENV DEBIAN_FRONTEND=noninteractive \ NPM_CONFIG_FUND=false \ NPM_CONFIG_AUDIT=false \ NPM_CONFIG_PROGRESS=false \ SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \ PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright \ NPM_CONFIG_CACHE=/home/node/.npm \ CI=true RUN apt-get update && \ apt-get install -y --no-install-recommends git ca-certificates dumb-init wget curl && \ rm -rf /var/lib/apt/lists/* WORKDIR /tmp/console-seed COPY ${APP_DIR}/package.json ${APP_DIR}/package-lock.json ./ ENV npm_config_cache=/tmp/npm-cache RUN npm ci --cache ${npm_config_cache} --prefer-offline --no-audit --progress=false --ignore-scripts && \ PLAYWRIGHT_BROWSERS_PATH=/tmp/ms-playwright npx playwright install chromium --with-deps && \ rm -rf node_modules RUN install -d -o node -g node /home/node/.npm /home/node/.cache && \ mv /tmp/npm-cache /home/node/.npm && \ mv /tmp/ms-playwright /home/node/.cache/ms-playwright && \ chown -R node:node /home/node/.npm /home/node/.cache WORKDIR /workspace USER node ENTRYPOINT ["/usr/bin/dumb-init","--"] CMD ["/bin/bash"]