mirror of
https://github.com/suitenumerique/docs.git
synced 2026-09-06 01:37:50 +02:00
We want to upgrade the frontend image using the last nginx version available in order to remove some fixed in version 1.29.7
83 lines
2.2 KiB
Docker
83 lines
2.2 KiB
Docker
ARG FRONTEND_IMAGE=frontend-build-output
|
|
|
|
FROM node:24-alpine AS frontend-deps
|
|
|
|
# Upgrade system packages to install security updates
|
|
RUN apk update && \
|
|
apk upgrade && \
|
|
rm -rf /var/cache/apk/*
|
|
|
|
WORKDIR /home/frontend/
|
|
|
|
COPY ./src/frontend/package.json ./package.json
|
|
COPY ./src/frontend/yarn.lock ./yarn.lock
|
|
COPY ./src/frontend/apps/impress/package.json ./apps/impress/package.json
|
|
COPY ./src/frontend/packages/eslint-plugin-docs/package.json ./packages/eslint-plugin-docs/package.json
|
|
|
|
RUN yarn install --frozen-lockfile
|
|
|
|
COPY .dockerignore ./.dockerignore
|
|
COPY ./src/frontend/.prettierrc.js ./.prettierrc.js
|
|
COPY ./src/frontend/packages/eslint-plugin-docs ./packages/eslint-plugin-docs
|
|
COPY ./src/frontend/apps/impress ./apps/impress
|
|
|
|
### ---- Front-end builder image ----
|
|
FROM frontend-deps AS impress
|
|
|
|
WORKDIR /home/frontend/apps/impress
|
|
|
|
FROM frontend-deps AS impress-dev
|
|
|
|
WORKDIR /home/frontend/apps/impress
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD [ "yarn", "dev"]
|
|
|
|
# Tilt will rebuild impress target so, we dissociate impress and impress-builder
|
|
# to avoid rebuilding the app at every changes.
|
|
FROM impress AS impress-builder
|
|
|
|
WORKDIR /home/frontend/apps/impress
|
|
|
|
ARG API_ORIGIN
|
|
ENV NEXT_PUBLIC_API_ORIGIN=${API_ORIGIN}
|
|
|
|
ARG SW_DEACTIVATED
|
|
ENV NEXT_PUBLIC_SW_DEACTIVATED=${SW_DEACTIVATED}
|
|
|
|
ARG PUBLISH_AS_MIT
|
|
ENV NEXT_PUBLIC_PUBLISH_AS_MIT=${PUBLISH_AS_MIT}
|
|
|
|
RUN yarn build
|
|
|
|
# Normalize output path to /app (matches the runtime-prod layout)
|
|
FROM scratch AS frontend-build-output
|
|
COPY --from=impress-builder /home/frontend/apps/impress/out /app
|
|
|
|
# When FRONTEND_IMAGE is set to an external image, BuildKit skips
|
|
# frontend-deps,impress-builder, and frontend-build-output entirely
|
|
FROM ${FRONTEND_IMAGE} AS frontend-source
|
|
|
|
# ---- Front-end image ----
|
|
FROM nginxinc/nginx-unprivileged:alpine3.23 AS frontend-production
|
|
|
|
# Upgrade system packages to install security updates
|
|
USER root
|
|
RUN apk update && \
|
|
apk upgrade && \
|
|
rm -rf /var/cache/apk/*
|
|
|
|
# Un-privileged user running the application
|
|
ARG DOCKER_USER
|
|
USER ${DOCKER_USER}
|
|
|
|
COPY --from=frontend-source /app /app
|
|
|
|
COPY ./src/frontend/apps/impress/conf/default.conf /etc/nginx/conf.d
|
|
COPY ./docker/files/usr/local/bin/entrypoint /usr/local/bin/entrypoint
|
|
|
|
ENTRYPOINT [ "/usr/local/bin/entrypoint" ]
|
|
|
|
CMD ["nginx", "-g", "daemon off;"]
|