From 2e4c005ad977a3e6b76565a71a66f2a74d1c8b9c Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Thu, 10 Nov 2022 23:22:17 -0500 Subject: [PATCH] refactor: multistage builds (#955) --- docker/docker-compose.test.yml | 2 +- machine-learning/Dockerfile | 12 ++++++++---- server/Dockerfile | 14 +++++++++----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/docker/docker-compose.test.yml b/docker/docker-compose.test.yml index 8b4c8fe23f..343374e5c4 100644 --- a/docker/docker-compose.test.yml +++ b/docker/docker-compose.test.yml @@ -7,7 +7,7 @@ services: context: ../server dockerfile: Dockerfile target: builder - command: npm ci && npm run test:e2e + command: npm run test:e2e expose: - '3000' volumes: diff --git a/machine-learning/Dockerfile b/machine-learning/Dockerfile index 3c290c8b3e..753cb9893b 100644 --- a/machine-learning/Dockerfile +++ b/machine-learning/Dockerfile @@ -1,5 +1,4 @@ -# Build stage FROM node:16-bullseye-slim as builder ARG DEBIAN_FRONTEND=noninteractive @@ -16,9 +15,14 @@ RUN npm rebuild @tensorflow/tfjs-node --build-from-source COPY . . + +FROM builder as prod + RUN npm run build -# Prod stage +RUN npm prune --omit=dev + + FROM node:16-bullseye-slim ARG DEBIAN_FRONTEND=noninteractive @@ -29,8 +33,8 @@ RUN apt-get update \ && apt-get install -y ffmpeg \ && rm -rf /var/cache/apt/lists -COPY --from=builder /usr/src/app/node_modules ./node_modules -COPY --from=builder /usr/src/app/dist ./dist +COPY --from=prod /usr/src/app/node_modules ./node_modules +COPY --from=prod /usr/src/app/dist ./dist COPY package.json package-lock.json ./ COPY entrypoint.sh ./ diff --git a/server/Dockerfile b/server/Dockerfile index 97d345eba8..322d056605 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -10,18 +10,22 @@ RUN npm ci COPY . . -RUN npm run build -# Prod stage +FROM builder as prod + +RUN npm run build +RUN npm prune --omit=dev + + FROM node:16-alpine3.14 WORKDIR /usr/src/app RUN apk add --no-cache libheif vips ffmpeg -COPY --from=builder /usr/src/app/node_modules ./node_modules -COPY --from=builder /usr/src/app/dist ./dist -COPY --from=builder /usr/src/app/bin ./bin +COPY --from=prod /usr/src/app/node_modules ./node_modules +COPY --from=prod /usr/src/app/dist ./dist +COPY --from=prod /usr/src/app/bin ./bin COPY LICENSE /licenses/LICENSE.txt COPY LICENSE /LICENSE