From 6d77cb18012722b81811754df6be3813411574e1 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Fri, 13 Dec 2024 12:35:39 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F(docker)=20improve=20y-provid?= =?UTF-8?q?er=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improve y-provider image by having the node_modules as small as possible. We move split the Dockerfile and add it to the y-provider folder, it will be easier to read and maintain. --- .github/workflows/docker-hub.yml | 4 +-- CHANGELOG.md | 4 +++ bin/Tiltfile | 2 +- docker-compose.yml | 6 +--- src/frontend/Dockerfile | 34 ++---------------- src/frontend/servers/y-provider/Dockerfile | 42 ++++++++++++++++++++++ 6 files changed, 53 insertions(+), 39 deletions(-) create mode 100644 src/frontend/servers/y-provider/Dockerfile diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 8be04fb2..e80df6e2 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -156,7 +156,7 @@ jobs: name: Run trivy scan uses: numerique-gouv/action-trivy-cache@main with: - docker-build-args: '-f src/frontend/Dockerfile --target y-provider' + docker-build-args: '-f src/frontend/servers/y-provider/Dockerfile --target y-provider' docker-image-name: 'docker.io/lasuite/impress-frontend:${{ github.sha }}' continue-on-error: true - @@ -164,7 +164,7 @@ jobs: uses: docker/build-push-action@v6 with: context: . - file: ./src/frontend/Dockerfile + file: ./src/frontend/servers/y-provider/Dockerfile target: y-provider build-args: DOCKER_USER=${{ env.DOCKER_USER }}:-1000 push: ${{ github.event_name != 'pull_request' }} diff --git a/CHANGELOG.md b/CHANGELOG.md index dbde129b..42509d5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to - ✨(backend) add server-to-server API endpoint to create documents #467 - ✨(email) white brand email #412 +## Changed + +- ⚡️(docker) improve y-provider image #422 + ## [1.9.0] - 2024-12-11 diff --git a/bin/Tiltfile b/bin/Tiltfile index 000638a3..ea4745fc 100644 --- a/bin/Tiltfile +++ b/bin/Tiltfile @@ -20,7 +20,7 @@ docker_build( docker_build( 'localhost:5001/impress-y-provider:latest', context='..', - dockerfile='../src/frontend/Dockerfile', + dockerfile='../src/frontend/servers/y-provider/Dockerfile', only=['./src/frontend/', './docker/', './.dockerignore'], target = 'y-provider', live_update=[ diff --git a/docker-compose.yml b/docker-compose.yml index 020bf10b..62d2d914 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -159,17 +159,13 @@ services: user: ${DOCKER_USER:-1000} build: context: . - dockerfile: ./src/frontend/Dockerfile + dockerfile: ./src/frontend/servers/y-provider/Dockerfile target: y-provider restart: unless-stopped env_file: - env.d/development/common ports: - "4444:4444" - volumes: - - ./src/frontend/servers/y-provider:/home/frontend/servers/y-provider - - /home/frontend/servers/y-provider/node_modules/ - - /home/frontend/servers/y-provider/dist/ kc_postgresql: image: postgres:14.3 diff --git a/src/frontend/Dockerfile b/src/frontend/Dockerfile index 8a179a9a..9452501e 100644 --- a/src/frontend/Dockerfile +++ b/src/frontend/Dockerfile @@ -1,33 +1,3 @@ -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/ @@ -40,7 +10,9 @@ COPY ./src/frontend/packages/eslint-config-impress/package.json ./packages/eslin RUN yarn install --frozen-lockfile COPY .dockerignore ./.dockerignore -COPY ./src/frontend/ . +COPY ./src/frontend/.prettierrc.js ./.prettierrc.js +COPY ./src/frontend/packages/eslint-config-impress ./packages/eslint-config-impress +COPY ./src/frontend/apps/impress ./apps/impress ### ---- Front-end builder image ---- FROM frontend-deps AS impress diff --git a/src/frontend/servers/y-provider/Dockerfile b/src/frontend/servers/y-provider/Dockerfile new file mode 100644 index 00000000..7ed5a2e7 --- /dev/null +++ b/src/frontend/servers/y-provider/Dockerfile @@ -0,0 +1,42 @@ +FROM node:20-alpine AS y-provider-builder + +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/packages/eslint-config-impress ./packages/eslint-config-impress +COPY ./src/frontend/servers/y-provider ./servers/y-provider + +WORKDIR /home/frontend/servers/y-provider +RUN yarn build + +FROM node:20-alpine AS 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 + +WORKDIR /home/frontend/servers/y-provider + +COPY --from=y-provider-builder \ + /home/frontend/servers/y-provider/dist \ + ./dist + +RUN NODE_ENV=production yarn install --frozen-lockfile + +# Un-privileged user running the application +ARG DOCKER_USER +USER ${DOCKER_USER} + +# Copy entrypoint +COPY ./docker/files/usr/local/bin/entrypoint /usr/local/bin/entrypoint +ENTRYPOINT [ "/usr/local/bin/entrypoint" ] + +CMD ["yarn", "start"]