From 1e29ff322d07f67c818076dbdb1419e7b1488277 Mon Sep 17 00:00:00 2001 From: Thanh Pham Date: Sun, 21 Aug 2022 11:19:02 +0700 Subject: [PATCH] build(server): minimal container (#506) * build(server): update Dockerfile * build(server): fix dockerfile * build(machine-learning): multiple build stages * build(server): update Dockerfile --- machine-learning/Dockerfile | 26 +++++++++++++++++++++++++- server/Dockerfile | 27 ++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/machine-learning/Dockerfile b/machine-learning/Dockerfile index c88e0c1038..e834a091fa 100644 --- a/machine-learning/Dockerfile +++ b/machine-learning/Dockerfile @@ -1,4 +1,5 @@ -FROM node:16-bullseye-slim +# Build stage +FROM node:16-bullseye-slim as builder ARG DEBIAN_FRONTEND=noninteractive @@ -15,3 +16,26 @@ RUN npm rebuild @tensorflow/tfjs-node --build-from-source COPY . . RUN npm run build + + +# Prod stage +FROM node:16-bullseye-slim + +ARG DEBIAN_FRONTEND=noninteractive + +WORKDIR /usr/src/app + +COPY package.json package-lock.json ./ + +RUN mkdir -p /usr/src/app/dist \ + && mkdir -p /usr/src/app/node_modules \ + && 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 + +RUN npm prune --production + +CMD [ "node", "dist/main" ] diff --git a/server/Dockerfile b/server/Dockerfile index cd2ff82e84..3164077b1b 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,15 +1,32 @@ -FROM node:16-alpine3.14 as core - -ARG DEBIAN_FRONTEND=noninteractive +# Build stage +FROM node:16-alpine3.14 as builder WORKDIR /usr/src/app COPY package.json package-lock.json ./ -RUN apk add --update-cache build-base python3 libheif vips-dev vips ffmpeg - +RUN apk add --update-cache build-base python3 libheif vips-dev RUN npm ci COPY . . RUN npm run build + + +# Prod stage +FROM node:16-alpine3.14 + +WORKDIR /usr/src/app + +COPY package.json package-lock.json ./ +COPY start-server.sh start-microservices.sh ./ + +RUN mkdir -p /usr/src/app/dist \ + && 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 + +RUN npm prune --production + +EXPOSE 3001