30 lines
677 B
Docker
30 lines
677 B
Docker
ARG ENV=production
|
|
ARG MONGO_VERSION=latest
|
|
ARG PORT=9001
|
|
|
|
## mongo build stage
|
|
FROM mongo:${MONGO_VERSION} AS database
|
|
WORKDIR /
|
|
COPY mongo-init.js ./docker-entrypoint-initdb.d/
|
|
|
|
## stage one, build the service
|
|
FROM node:20-alpine AS build
|
|
ENV NODE_ENV development
|
|
WORKDIR /home/node/app
|
|
COPY package*.json ./
|
|
COPY tsconfig.json ./
|
|
COPY lib ./lib
|
|
RUN ls -a
|
|
RUN yarn install
|
|
RUN yarn build
|
|
|
|
## this is stage two , where the app actually runs
|
|
FROM node:20-alpine AS containerize
|
|
ENV NODE_ENV ${ENV}
|
|
WORKDIR /home/node/app
|
|
COPY package*.json ./
|
|
RUN yarn install --frozen-lockfile --production
|
|
COPY --from=build /home/node/app/dist .
|
|
EXPOSE ${PORT}
|
|
CMD ["node","server/index.js"]
|