Dockerfile 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. FROM node:20-alpine AS backend_base
  2. ARG UID=1000
  3. ARG GID=1000
  4. RUN deluser --remove-home node \
  5. && addgroup -S -g ${GID} musare \
  6. && adduser -SD -u ${UID} musare \
  7. && adduser musare musare
  8. RUN mkdir -p /opt/.git /opt/common /opt/types /opt/app \
  9. && chown -R musare:musare /opt/app
  10. WORKDIR /opt/app
  11. USER musare
  12. FROM backend_base AS backend_node_modules
  13. RUN mkdir -p /opt/app
  14. WORKDIR /opt/app
  15. COPY --chown=musare:musare --link backend/package.json backend/package-lock.json /opt/app/
  16. RUN npm install
  17. FROM backend_base AS musare_backend
  18. ARG CONTAINER_MODE=production
  19. ARG BACKEND_MODE=production
  20. ENV CONTAINER_MODE=${CONTAINER_MODE}
  21. ENV BACKEND_MODE=${BACKEND_MODE}
  22. COPY --chown=musare:musare --link .git /opt/.git
  23. COPY --chown=musare:musare --link common /opt/common
  24. COPY --chown=musare:musare --link types /opt/types
  25. COPY --chown=musare:musare --link backend /opt/app
  26. COPY --chown=musare:musare --link --from=backend_node_modules /opt/app/node_modules node_modules
  27. RUN sh -c '([[ "${BACKEND_MODE}" == "development" ]] && exit 0) || npm run build'
  28. ENTRYPOINT sh /opt/app/entrypoint.sh
  29. EXPOSE 8080/tcp
  30. EXPOSE 8080/udp