mirror of
https://github.com/suitenumerique/docs.git
synced 2026-09-25 19:15:14 +02:00
We centralized the configuration on the backend side, it is easier to manage and we can change the configuration without having to rebuild the frontend. We now use the config endpoint to get the theme, we refacto to remove the frontend env occurences and to adapt with the new way to get the theme.
95 lines
2.3 KiB
Docker
95 lines
2.3 KiB
Docker
FROM node:20-alpine AS frontend-deps-y-provider
|
|
|
|
WORKDIR /home/frontend/
|
|
|
|
COPY ./src/frontend/package.json ./package.json
|
|
COPY ./src/frontend/yarn.lock ./yarn.lock
|
|
COPY ./src/frontend/servers/y-provider/package.json ./servers/y-provider/package.json
|
|
COPY ./src/frontend/packages/eslint-config-impress/package.json ./packages/eslint-config-impress/package.json
|
|
|
|
RUN yarn install
|
|
|
|
COPY ./src/frontend/ .
|
|
|
|
# Copy entrypoint
|
|
COPY ./docker/files/usr/local/bin/entrypoint /usr/local/bin/entrypoint
|
|
|
|
# ---- y-provider ----
|
|
FROM frontend-deps-y-provider AS y-provider
|
|
|
|
WORKDIR /home/frontend/servers/y-provider
|
|
RUN yarn build
|
|
|
|
# Un-privileged user running the application
|
|
ARG DOCKER_USER
|
|
USER ${DOCKER_USER}
|
|
|
|
ENTRYPOINT [ "/usr/local/bin/entrypoint" ]
|
|
|
|
CMD ["yarn", "start"]
|
|
|
|
FROM node:20-alpine AS frontend-deps
|
|
|
|
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-config-impress/package.json ./packages/eslint-config-impress/package.json
|
|
|
|
RUN yarn install --frozen-lockfile
|
|
|
|
COPY .dockerignore ./.dockerignore
|
|
COPY ./src/frontend/ .
|
|
|
|
### ---- 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 Y_PROVIDER_URL
|
|
ENV NEXT_PUBLIC_Y_PROVIDER_URL=${Y_PROVIDER_URL}
|
|
|
|
ARG API_ORIGIN
|
|
ENV NEXT_PUBLIC_API_ORIGIN=${API_ORIGIN}
|
|
|
|
ARG MEDIA_URL
|
|
ENV NEXT_PUBLIC_MEDIA_URL=${MEDIA_URL}
|
|
|
|
ARG SW_DEACTIVATED
|
|
ENV NEXT_PUBLIC_SW_DEACTIVATED=${SW_DEACTIVATED}
|
|
|
|
RUN yarn build
|
|
|
|
# ---- Front-end image ----
|
|
FROM nginxinc/nginx-unprivileged:1.26-alpine AS frontend-production
|
|
|
|
# Un-privileged user running the application
|
|
ARG DOCKER_USER
|
|
USER ${DOCKER_USER}
|
|
|
|
COPY --from=impress-builder \
|
|
/home/frontend/apps/impress/out \
|
|
/usr/share/nginx/html
|
|
|
|
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;"]
|