⚡️(docker) improve y-provider image
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.
This commit is contained in:
4
.github/workflows/docker-hub.yml
vendored
4
.github/workflows/docker-hub.yml
vendored
@@ -156,7 +156,7 @@ jobs:
|
|||||||
name: Run trivy scan
|
name: Run trivy scan
|
||||||
uses: numerique-gouv/action-trivy-cache@main
|
uses: numerique-gouv/action-trivy-cache@main
|
||||||
with:
|
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 }}'
|
docker-image-name: 'docker.io/lasuite/impress-frontend:${{ github.sha }}'
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
-
|
-
|
||||||
@@ -164,7 +164,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./src/frontend/Dockerfile
|
file: ./src/frontend/servers/y-provider/Dockerfile
|
||||||
target: y-provider
|
target: y-provider
|
||||||
build-args: DOCKER_USER=${{ env.DOCKER_USER }}:-1000
|
build-args: DOCKER_USER=${{ env.DOCKER_USER }}:-1000
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ and this project adheres to
|
|||||||
- ✨(backend) add server-to-server API endpoint to create documents #467
|
- ✨(backend) add server-to-server API endpoint to create documents #467
|
||||||
- ✨(email) white brand email #412
|
- ✨(email) white brand email #412
|
||||||
|
|
||||||
|
## Changed
|
||||||
|
|
||||||
|
- ⚡️(docker) improve y-provider image #422
|
||||||
|
|
||||||
|
|
||||||
## [1.9.0] - 2024-12-11
|
## [1.9.0] - 2024-12-11
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ docker_build(
|
|||||||
docker_build(
|
docker_build(
|
||||||
'localhost:5001/impress-y-provider:latest',
|
'localhost:5001/impress-y-provider:latest',
|
||||||
context='..',
|
context='..',
|
||||||
dockerfile='../src/frontend/Dockerfile',
|
dockerfile='../src/frontend/servers/y-provider/Dockerfile',
|
||||||
only=['./src/frontend/', './docker/', './.dockerignore'],
|
only=['./src/frontend/', './docker/', './.dockerignore'],
|
||||||
target = 'y-provider',
|
target = 'y-provider',
|
||||||
live_update=[
|
live_update=[
|
||||||
|
|||||||
@@ -159,17 +159,13 @@ services:
|
|||||||
user: ${DOCKER_USER:-1000}
|
user: ${DOCKER_USER:-1000}
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./src/frontend/Dockerfile
|
dockerfile: ./src/frontend/servers/y-provider/Dockerfile
|
||||||
target: y-provider
|
target: y-provider
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- env.d/development/common
|
- env.d/development/common
|
||||||
ports:
|
ports:
|
||||||
- "4444:4444"
|
- "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:
|
kc_postgresql:
|
||||||
image: postgres:14.3
|
image: postgres:14.3
|
||||||
|
|||||||
@@ -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
|
FROM node:20-alpine AS frontend-deps
|
||||||
|
|
||||||
WORKDIR /home/frontend/
|
WORKDIR /home/frontend/
|
||||||
@@ -40,7 +10,9 @@ COPY ./src/frontend/packages/eslint-config-impress/package.json ./packages/eslin
|
|||||||
RUN yarn install --frozen-lockfile
|
RUN yarn install --frozen-lockfile
|
||||||
|
|
||||||
COPY .dockerignore ./.dockerignore
|
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 ----
|
### ---- Front-end builder image ----
|
||||||
FROM frontend-deps AS impress
|
FROM frontend-deps AS impress
|
||||||
|
|||||||
42
src/frontend/servers/y-provider/Dockerfile
Normal file
42
src/frontend/servers/y-provider/Dockerfile
Normal file
@@ -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"]
|
||||||
Reference in New Issue
Block a user