From 7d87296d1132de507dfc530e4a54438477b4806d Mon Sep 17 00:00:00 2001 From: Developer Date: Tue, 2 Dec 2025 07:03:08 -0800 Subject: [PATCH] =?UTF-8?q?fix(leaderboard-service):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20Dockerfile=20=E4=BD=BF=E7=94=A8=20Debian=20slim=20=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=20Prisma=20=E5=85=BC=E5=AE=B9=E6=80=A7=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Builder 阶段从 node:20-alpine 改为 node:20-slim - 解决 Alpine Linux 上 @prisma/engines 下载失败问题 (ECONNRESET) - 使用 COPY src ./src 替代 COPY . . 优化构建 - 添加构建输出验证步骤 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../services/leaderboard-service/Dockerfile | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/backend/services/leaderboard-service/Dockerfile b/backend/services/leaderboard-service/Dockerfile index 419eb3d9..484c5ab1 100644 --- a/backend/services/leaderboard-service/Dockerfile +++ b/backend/services/leaderboard-service/Dockerfile @@ -1,13 +1,21 @@ -# Multi-stage build for production -FROM node:20-alpine AS builder +# ============================================================================= +# Leaderboard Service Dockerfile +# ============================================================================= + +# Build stage - use Debian slim for better Prisma compatibility +FROM node:20-slim AS builder WORKDIR /app # Install OpenSSL for Prisma -RUN apk add --no-cache openssl +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssl \ + && rm -rf /var/lib/apt/lists/* # Copy package files COPY package*.json ./ +COPY tsconfig*.json ./ +COPY nest-cli.json ./ COPY prisma ./prisma/ # Install dependencies @@ -17,11 +25,14 @@ RUN npm ci RUN DATABASE_URL="postgresql://user:pass@localhost:5432/db" npx prisma generate # Copy source code -COPY . . +COPY src ./src # Build the application RUN npm run build +# Verify build output exists +RUN ls -la dist/src/ && test -f dist/src/main.js + # Production stage - use Debian slim for OpenSSL compatibility FROM node:20-slim AS production