12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- FROM node:20-alpine3.20 AS base
- LABEL maintainer="takatost@gmail.com"
- RUN apk add --no-cache tzdata
- RUN npm install -g pnpm@9.12.2
- ENV PNPM_HOME="/pnpm"
- ENV PATH="$PNPM_HOME:$PATH"
- FROM base AS packages
- WORKDIR /app/web
- COPY package.json .
- COPY pnpm-lock.yaml .
- RUN pnpm install --frozen-lockfile
- FROM base AS builder
- WORKDIR /app/web
- COPY --from=packages /app/web/ .
- COPY . .
- ENV NODE_OPTIONS="--max-old-space-size=4096"
- RUN pnpm build
- 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 MARKETPLACE_API_URL=http://127.0.0.1:5001
- ENV MARKETPLACE_URL=http://127.0.0.1:5001
- ENV PORT=3000
- ENV NEXT_TELEMETRY_DISABLED=1
- ENV PM2_INSTANCES=2
- 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/entrypoint.sh ./entrypoint.sh
- RUN pnpm add -g pm2 \
- && 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"]
|