You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iassure-wx/Dockerfile

63 lines
1.9 KiB

# ################################################################
# ### Base image ###
# ################################################################
FROM node:16-alpine as base
WORKDIR /opt
COPY . .
WORKDIR /opt/backend
ARG NODE_ENV=production
ENV NODE_ENV ${NODE_ENV}
RUN npm i npm@latest -g
RUN chown node:node -R /opt
USER node
# ################################################################
# ### development image ###
# ################################################################
FROM base as development
RUN npm install --quiet --unsafe-perm --no-progress --no-audit --include=dev
CMD npm run dev
# ################################################################
# ### backend build image ###
# ################################################################
FROM base as backendbuild
RUN npm install --quiet --unsafe-perm --no-progress --no-audit --include=dev
RUN npx tsc -p ./tsconfig.json
# ################################################################
# ### frontend build image ###
# ################################################################
FROM base as frontendbuild
WORKDIR /opt/frontend
RUN npm install --quiet --unsafe-perm --no-progress --no-audit --include=dev
RUN npm run build
# ################################################################
# ### production image ###
# ################################################################
FROM base as production
COPY --from=backendbuild --chown=node:node /opt/backend/dist/ /opt/backend/dist/
COPY --from=frontendbuild --chown=node:node /opt/frontend/dist/ /opt/frontend/dist/
RUN npm install --quiet --unsafe-perm --no-progress --no-audit --omit=dev
CMD node --es-module-specifier-resolution=node dist/app.js