Files
auth-service/Dockerfile
2023-05-26 09:35:56 -04:00

40 lines
1.1 KiB
Docker

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}
ARG 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"]