mirror of
https://github.com/netbirdio/docs.git
synced 2026-08-24 16:51:26 +02:00
Move `npm run build` out of the Docker image onto the runner, where actions/cache persists .next/cache across runs (the in-Docker build discarded it every time). The image now just packages the prebuilt .next and serves it with `next start`; runtime and the DocSearch entrypoint injection are unchanged. Also: checkout full history (fetch-depth: 0) so per-page dates are correct, guard buildGitDateMap against shallow clones (correct-or-absent, never wrong), modernise the Docker actions (build-push-action v6, provenance: false), and add a path-filtered pull_request trigger so pipeline changes are validated before merge. Smoke-tested via isolated build + docker run: serves /, /introduction, /api, sitemap, static assets (200); DocSearch placeholder injection intact.
31 lines
853 B
Docker
31 lines
853 B
Docker
FROM node:20-alpine
|
|
|
|
# Set working directory
|
|
WORKDIR /usr/app
|
|
|
|
# Install PM2 globally
|
|
RUN npm install --global pm2
|
|
|
|
# Copy package.json and package-lock.json before other files
|
|
# Utilise Docker cache to save re-installing dependencies if unchanged
|
|
COPY ./package*.json ./
|
|
|
|
# Install runtime dependencies (npm ci = clean, reproducible install from the lockfile)
|
|
RUN npm ci --omit=dev
|
|
|
|
# Copy the app, including the prebuilt .next output. The build now runs on the
|
|
# CI runner (see .github/workflows/build_n_push.yml) with a warm .next/cache,
|
|
# so there is no `npm run build` step here — we only package the result.
|
|
COPY ./ ./
|
|
|
|
COPY /docker/entrypoint.sh ./entrypoint.sh
|
|
|
|
RUN chmod u+x /usr/app/entrypoint.sh
|
|
|
|
# Expose the listening port
|
|
EXPOSE 3000
|
|
|
|
# apply env variables to the Nextjs .env file
|
|
ENTRYPOINT ["/usr/app/entrypoint.sh"]
|
|
|
|
CMD npm run start |