diff --git a/dockerfile b/dockerfile index 317ded4..b98583f 100644 --- a/dockerfile +++ b/dockerfile @@ -19,13 +19,9 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ # ---- 构建层:生成 Prisma Client + Next.js 产物 ---- FROM base AS builder ENV NEXT_TELEMETRY_DISABLED=1 NODE_ENV=production -# 构建时需要的环境变量(数据库连接、认证密钥等) -ARG DATABASE_URL NEXT_PUBLIC_BASE_URL BETTER_AUTH_SECRET BETTER_AUTH_TELEMETRY REDIS_URL -ENV DATABASE_URL=${DATABASE_URL} \ - NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL} \ - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} \ - BETTER_AUTH_TELEMETRY=${BETTER_AUTH_TELEMETRY} \ - REDIS_URL=${REDIS_URL} +# 构建时仅需 DATABASE_URL(db:generate 生成 Drizzle Client) +ARG DATABASE_URL +ENV DATABASE_URL=${DATABASE_URL} # 从 deps 层复制已安装的 node_modules,避免重复安装 COPY --from=deps /app/node_modules ./node_modules @@ -39,13 +35,6 @@ FROM node:24-alpine AS runner WORKDIR /app ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 PORT=3000 HOSTNAME="0.0.0.0" -# 运行时环境变量 -ARG DATABASE_URL NEXT_PUBLIC_BASE_URL BETTER_AUTH_SECRET BETTER_AUTH_TELEMETRY REDIS_URL -ENV DATABASE_URL=${DATABASE_URL} \ - NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL} \ - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} \ - BETTER_AUTH_TELEMETRY=${BETTER_AUTH_TELEMETRY} \ - REDIS_URL=${REDIS_URL} # 非 root 用户运行,提升安全性 RUN addgroup --system --gid 1001 nodejs && \