Spaces:
Paused
Paused
| # base image | |
| FROM node:20.11-alpine3.19 AS base | |
| LABEL maintainer="[email protected]" | |
| # if you located in China, you can use aliyun mirror to speed up | |
| # RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories | |
| RUN apk add --no-cache tzdata | |
| # install packages | |
| FROM base AS packages | |
| WORKDIR /app/web | |
| COPY package.json . | |
| COPY yarn.lock . | |
| # if you located in China, you can use taobao registry to speed up | |
| # RUN yarn install --frozen-lockfile --registry https://registry.npmmirror.com/ | |
| RUN yarn install --frozen-lockfile | |
| # build resources | |
| FROM base AS builder | |
| WORKDIR /app/web | |
| COPY --from=packages /app/web/ . | |
| COPY . . | |
| RUN yarn build | |
| # production stage | |
| FROM base AS production | |
| ENV NODE_ENV=production | |
| ENV EDITION=SELF_HOSTED | |
| ENV DEPLOY_ENV=PRODUCTION | |
| ENV CONSOLE_API_URL=http://127.0.0.1:5001 | |
| ENV APP_API_URL=http://127.0.0.1:5001 | |
| ENV PORT=3000 | |
| ENV NEXT_TELEMETRY_DISABLED=1 | |
| # set timezone | |
| ENV TZ=UTC | |
| RUN ln -s /usr/share/zoneinfo/${TZ} /etc/localtime \ | |
| && echo ${TZ} > /etc/timezone | |
| WORKDIR /app/web | |
| COPY --from=builder /app/web/public ./public | |
| COPY --from=builder /app/web/.next/standalone ./ | |
| COPY --from=builder /app/web/.next/static ./.next/static | |
| COPY docker/pm2.json ./pm2.json | |
| COPY docker/entrypoint.sh ./entrypoint.sh | |
| # global runtime packages | |
| RUN yarn global add pm2 \ | |
| && yarn cache clean \ | |
| && mkdir /.pm2 \ | |
| && chown -R 1001:0 /.pm2 /app/web \ | |
| && chmod -R g=u /.pm2 /app/web | |
| ARG COMMIT_SHA | |
| ENV COMMIT_SHA=${COMMIT_SHA} | |
| USER 1001 | |
| EXPOSE 3000 | |
| ENTRYPOINT ["/bin/sh", "./entrypoint.sh"] | |