Files
OpenFlare/frontend/Dockerfile
T
2026-06-08 20:34:27 +08:00

53 lines
1.5 KiB
Docker

# ---- base stage ----
FROM node:22-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable && corepack prepare pnpm@10.10.0 --activate
# ---- build stage ----
FROM base AS builder
ENV NODE_ENV=production
ENV NEXT_PUBLIC_LINUX_DO_CREDIT_BACKEND_URL=https://build-placeholder.invalid
ENV LINUX_DO_CREDIT_SESSION_COOKIE_NAME=__LINUX_DO_CREDIT_SESSION_COOKIE_NAME__
ENV LINUX_DO_CREDIT_RATE_LIMIT_ENABLED=__LINUX_DO_CREDIT_RATE_LIMIT_ENABLED__
ENV LINUX_DO_CREDIT_BACKEND_URL=https://build-placeholder-2.invalid
ARG VERSION=""
ARG BUILD_DATE=""
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY . .
RUN if [ -n "$VERSION" ] || [ -n "$BUILD_DATE" ]; then \
VERSION="$VERSION" BUILD_DATE="$BUILD_DATE" node -e "const fs = require('fs'); const pkg = require('./package.json'); const version = process.env.VERSION; const buildDate = process.env.BUILD_DATE; if (version) pkg.version = version; if (buildDate) pkg.buildDate = buildDate; fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\\n')"; \
fi
RUN pnpm build
RUN grep -rl \
-e "https://build-placeholder.invalid" \
-e "https://build-placeholder-2.invalid" \
-e "__LINUX_DO_CREDIT_SESSION_COOKIE_NAME__" \
-e "__LINUX_DO_CREDIT_RATE_LIMIT_ENABLED__" \
/app/.next > /app/.replace.files
# ---- runner stage ----
FROM base AS runner
WORKDIR /app
COPY --from=builder /app .
EXPOSE 3000
ENTRYPOINT ["./entrypoint.sh"]
CMD ["pnpm", "start"]