From 6f95aac7988584390e44c8eae98b46ecc9a0da10 Mon Sep 17 00:00:00 2001 From: Julien Recurt Date: Sun, 19 May 2024 20:40:35 +0200 Subject: [PATCH 1/4] Adding multistage build --- Dockerfile | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 467dbea44..82861a678 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,12 @@ +FROM node:18.18-alpine as builder +ENV NODE_ENV=docker +ENV ONTIME_DATA=/external/ +WORKDIR /app/ +RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh - +COPY . /app/ +RUN PNPM_HOME="/root/.local/share/pnpm" PATH="${PATH}:/root/.local/share/pnpm" pnpm i +run PNPM_HOME="/root/.local/share/pnpm" PATH="${PATH}:/root/.local/share/pnpm" pnpm run build:localdocker + FROM node:18.18-alpine # Set environment variables @@ -9,12 +18,12 @@ ENV ONTIME_DATA=/external/ WORKDIR /app/ # Prepare UI -COPY /apps/client/build ./client/ +COPY --from=builder /app/apps/client/build ./client/ # Prepare Backend -COPY /apps/server/dist/ ./server/ -COPY /demo-db/ ./preloaded-db/ -COPY /apps/server/src/external/ ./external/ +COPY --from=builder /app/apps/server/dist/ ./server/ +COPY ./demo-db/ ./preloaded-db/ +COPY --from=builder /app/apps/server/src/external/ ./external/ # Export default ports EXPOSE 4001/tcp 8888/udp 9999/udp From 770d975610eace41a254b34c60ff2382d21b2bcc Mon Sep 17 00:00:00 2001 From: Julien Recurt Date: Sun, 19 May 2024 20:44:42 +0200 Subject: [PATCH 2/4] Update DEVELOPMENT.md --- DEVELOPMENT.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index ef8afadea..4aeeadbc4 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -88,8 +88,6 @@ While it should allow for a generic setup, it might need to be modified to fit y From the project root, run the following commands -- __Install the project dependencies__ by running `pnpm i` -- __Build packages__ by running `pnpm build:localdocker` - __Build docker image from__ by running `docker build -t getontime/ontime` - __Run docker image from compose__ by running `docker-compose up -d` From a431fab3c40c266ee51389ab0efb9030af1f670f Mon Sep 17 00:00:00 2001 From: Julien Recurt Date: Sun, 19 May 2024 21:16:39 +0200 Subject: [PATCH 3/4] exclude compose generated volumes directory --- .dockerignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.dockerignore b/.dockerignore index f14d5145f..118a677a3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,3 +12,7 @@ # Ignore git and cache folders .git .cache + +# Ignore default volumes created by running docker compose up +ontime-db +ontime-styles From d16141141624124409b0bd759325703f0dc15d8d Mon Sep 17 00:00:00 2001 From: Julien Recurt Date: Tue, 21 May 2024 11:27:02 +0200 Subject: [PATCH 4/4] Updating Dockerfile for multistage build based on feedbacks --- .dockerignore | 5 +++++ Dockerfile | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.dockerignore b/.dockerignore index 118a677a3..fcac172a2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,8 +11,13 @@ # Ignore git and cache folders .git +.gitignore .cache +# Ignore build folders +node_modules +dist + # Ignore default volumes created by running docker compose up ontime-db ontime-styles diff --git a/Dockerfile b/Dockerfile index 82861a678..35ecc88b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,13 @@ -FROM node:18.18-alpine as builder -ENV NODE_ENV=docker -ENV ONTIME_DATA=/external/ -WORKDIR /app/ -RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh - -COPY . /app/ -RUN PNPM_HOME="/root/.local/share/pnpm" PATH="${PATH}:/root/.local/share/pnpm" pnpm i -run PNPM_HOME="/root/.local/share/pnpm" PATH="${PATH}:/root/.local/share/pnpm" pnpm run build:localdocker +FROM node:18.18-alpine AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +FROM base AS builder +COPY . /app +WORKDIR /app +RUN pnpm install --frozen-lockfile \ + && pnpm turbo build:docker FROM node:18.18-alpine