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