Dockerfile 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # base image
  2. FROM node:20.11-alpine3.19 AS base
  3. LABEL maintainer="takatost@gmail.com"
  4. RUN apk add --no-cache tzdata
  5. # install packages
  6. FROM base as packages
  7. WORKDIR /app/web
  8. COPY package.json .
  9. COPY yarn.lock .
  10. RUN yarn install --frozen-lockfile
  11. # if you located in China, you can use taobao registry to speed up
  12. # RUN yarn install --frozen-lockfile --registry https://registry.npm.taobao.org/
  13. # build resources
  14. FROM base as builder
  15. WORKDIR /app/web
  16. COPY --from=packages /app/web/ .
  17. COPY . .
  18. RUN yarn build
  19. # production stage
  20. FROM base as production
  21. ENV NODE_ENV production
  22. ENV EDITION SELF_HOSTED
  23. ENV DEPLOY_ENV PRODUCTION
  24. ENV CONSOLE_API_URL http://127.0.0.1:5001
  25. ENV APP_API_URL http://127.0.0.1:5001
  26. ENV PORT 3000
  27. # set timezone
  28. ENV TZ UTC
  29. RUN ln -s /usr/share/zoneinfo/${TZ} /etc/localtime \
  30. && echo ${TZ} > /etc/timezone
  31. # global runtime packages
  32. RUN yarn global add pm2 \
  33. && yarn cache clean
  34. WORKDIR /app/web
  35. COPY --from=builder /app/web/public ./public
  36. COPY --from=builder /app/web/.next/standalone ./
  37. COPY --from=builder /app/web/.next/static ./.next/static
  38. COPY docker/pm2.json ./pm2.json
  39. COPY docker/entrypoint.sh ./entrypoint.sh
  40. ARG COMMIT_SHA
  41. ENV COMMIT_SHA ${COMMIT_SHA}
  42. EXPOSE 3000
  43. ENTRYPOINT ["/bin/sh", "./entrypoint.sh"]