ARG ENV=production ARG PORT=9001 ARG NPM_TOKEN ARG YARN_VERSION=3.5.0 ARG MONGO_ENTRY_FILE=${MONGO_VERSION:-latest} ARG MONGO_VERSION=${MONGO_VERSION:-latest} ## mongo build stage FROM mongo:$MONGO_VERSION AS database ENV NODE_ENV $ENV ENV MONGO_ENTRY_FILE $MONGO_ENTRY_FILE ENV MONGO_VERSION $MONGO_VERSION COPY docker-entrypoint-initdb.d/mongo-init-$MONGO_ENTRY_FILE.sh ./docker-entrypoint-initdb.d/mongo-init.sh ## stage one, build the service FROM node:20-bullseye-slim AS build ENV YARN_VERSION $YARN_VERSION ENV NODE_ENV development ENV NPM_TOKEN $NPM_TOKEN WORKDIR /home/node/app COPY .npmrc /root COPY .build.yarnrc.yml /root/.yarnrc.yml COPY . . RUN yarn set version stable && yarn install RUN yarn build:production ## this is stage two , where the app actually runs FROM node:20-bullseye-slim AS containerize ENV YARN_VERSION $YARN_VERSION ENV NODE_ENV $ENV ENV NPM_TOKEN $NPM_TOKEN WORKDIR /home/node/app COPY .npmrc /root COPY .build.yarnrc.yml /root/.yarnrc.yml COPY package*.json yarn.lock ./ RUN yarn set version stable && yarn install && yarn cache clean COPY --from=build /home/node/app/dist ./ EXPOSE $PORT CMD ["node","index.js"]