From 6cd16826fdd54b44f08a86bf167e12c867bbd1a0 Mon Sep 17 00:00:00 2001 From: Eason Date: Mon, 13 Mar 2023 09:03:17 +0800 Subject: [PATCH] chore: optimize dockerfile to speed up building and reduce docker image size (#520) --- Dockerfile | 56 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 90a0f09..1c73771 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,56 @@ # build front-end -FROM node:lts-alpine AS builder +FROM node:lts-alpine AS frontend + +RUN npm install pnpm -g -COPY ./ /app WORKDIR /app -RUN apk add --no-cache git \ - && npm install pnpm -g \ - && pnpm install \ - && pnpm run build \ - && rm -rf /root/.npm /root/.pnpm-store /usr/local/share/.cache /tmp/* +COPY ./package.json /app + +COPY ./pnpm-lock.yaml /app + +RUN pnpm install + +COPY . /app + +RUN pnpm run build + +# build backend +FROM node:lts-alpine as backend + +RUN npm install pnpm -g + +WORKDIR /app + +COPY /service/package.json /app + +COPY /service/pnpm-lock.yaml /app + +RUN pnpm install + +COPY /service /app + +RUN pnpm build # service FROM node:lts-alpine -COPY /service /app -COPY --from=builder /app/dist /app/public +RUN npm install pnpm -g WORKDIR /app -RUN apk add --no-cache git \ - && npm install pnpm -g \ - && pnpm install --only=production \ - && rm -rf /root/.npm /root/.pnpm-store /usr/local/share/.cache /tmp/* +COPY /service/package.json /app + +COPY /service/pnpm-lock.yaml /app + +RUN pnpm install --production && rm -rf /root/.npm /root/.pnpm-store /usr/local/share/.cache /tmp/* + +COPY /service /app + +COPY --from=frontend /app/dist /app/public + +COPY --from=backend /app/build /app/build EXPOSE 3002 -CMD ["pnpm", "run", "start"] +CMD ["pnpm", "run", "prod"]