Bladeren bron

refactor: multistage builds (#955)

Jason Rasmussen 2 jaren geleden
bovenliggende
commit
2e4c005ad9
3 gewijzigde bestanden met toevoegingen van 17 en 9 verwijderingen
  1. 1 1
      docker/docker-compose.test.yml
  2. 8 4
      machine-learning/Dockerfile
  3. 8 4
      server/Dockerfile

+ 1 - 1
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:

+ 8 - 4
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 ./

+ 8 - 4
server/Dockerfile

@@ -10,18 +10,22 @@ RUN npm ci
 
 COPY . .
 
+
+FROM builder as prod
+
 RUN npm run build
+RUN npm prune --omit=dev
+
 
-# Prod stage
 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