diff --git a/Dockerfile b/Dockerfile index 714fead6ac57179f072abe8070b3ac935c2fe671..096f651c4aaafc4b63f046fb83e12c0915247649 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,4 @@ -# Base -FROM node:20 AS base - +FROM node:20 AS dependencies ARG APP_HOME=/home/node/app ARG SERVICE @@ -8,16 +6,20 @@ WORKDIR ${APP_HOME} RUN corepack enable -# Dependencies -FROM base AS dependencies - COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig*.json .swcrc ./ COPY patches ./patches COPY apps/shared/package.json ./apps/shared/ RUN pnpm install --frozen-lockfile # Build shared -FROM base AS build-shared +FROM node:20 as build-shared + +ARG APP_HOME=/home/node/app +ARG SERVICE + +WORKDIR ${APP_HOME} + +RUN corepack enable COPY apps/shared ./apps/shared COPY --from=dependencies ${APP_HOME}/package.json ${APP_HOME}/pnpm-lock.yaml ${APP_HOME}/pnpm-workspace.yaml ${APP_HOME}/tsconfig*.json ${APP_HOME}/.swcrc ./ @@ -27,11 +29,18 @@ COPY --from=dependencies ${APP_HOME}/patches ./patches RUN pnpm --filter shared build # Build service -FROM base AS build-service +FROM node:20 AS build-service -COPY --from=dependencies ${APP_HOME}/package.json ${APP_HOME}/pnpm-lock.yaml ${APP_HOME}/pnpm-workspace.yaml ${APP_HOME}/tsconfig*.json ${APP_HOME}/.swcrc ./ -COPY --from=dependencies ${APP_HOME}/node_modules ./node_modules -COPY --from=dependencies ${APP_HOME}/patches ./patches +ARG APP_HOME=/home/node/app +ARG SERVICE + +WORKDIR ${APP_HOME} + +RUN corepack enable + +COPY --from=dependencies ${APP_HOME}/package.json ${APP_HOME}/pnpm-lock.yaml ${APP_HOME}/pnpm-workspace.yaml ${APP_HOME}/tsconfig*.json ${APP_HOME}/.swcrc ./ +COPY --from=dependencies ${APP_HOME}/node_modules ./node_modules +COPY --from=dependencies ${APP_HOME}/patches ./patches COPY --from=build-shared ${APP_HOME}/apps/shared ./apps/shared COPY apps/${SERVICE} ./apps/${SERVICE} RUN pnpm install --frozen-lockfile && pnpm --filter ${SERVICE} build && pnpm --filter ${SERVICE} --prod deploy build