From b4173c10bbd185c0fbce748f73b8e793397cc121 Mon Sep 17 00:00:00 2001 From: Fahri Can Date: Thu, 16 Apr 2026 09:08:58 +0300 Subject: [PATCH] fix: copy top_leagues config files to Docker image and fix port mapping --- .gitea/workflows/deploy.yml | 2 +- Dockerfile | 59 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100755 Dockerfile diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 2d54c79..dcc28d9 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -23,7 +23,7 @@ jobs: --name iddaai-be \ --restart unless-stopped \ --network iddaai_iddaai-network \ - -p 127.0.0.1:1810:3000 \ + -p 127.0.0.1:1810:3005 \ -e NODE_ENV=production \ -e DATABASE_URL='postgresql://iddaai_user:IddaA1_S4crET!@iddaai-postgres:5432/iddaai_db?schema=public' \ -e REDIS_HOST='iddaai-redis' \ diff --git a/Dockerfile b/Dockerfile new file mode 100755 index 0000000..3836f46 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +# Build stage +FROM node:20-alpine AS builder + +# Add build tools for native canvas compilation (fixes 16k page size issues on RPi5 ARM64) +RUN apk add --no-cache python3 make g++ cairo-dev pango-dev jpeg-dev giflib-dev librsvg-dev + +WORKDIR /app + +# Copy package files +COPY package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy source code +COPY . . + +# Generate Prisma client +RUN npx prisma generate + +# Build the application +RUN npm run build + +# Production stage +FROM node:20-alpine AS production + +# Add runtime dependencies for canvas & prisma +RUN apk add --no-cache cairo pango jpeg giflib librsvg openssl +WORKDIR /app + +# Copy package files +COPY package*.json ./ + +# Install production dependencies only (with build tools for canvas) +RUN apk add --no-cache --virtual .build-deps python3 make g++ cairo-dev pango-dev jpeg-dev giflib-dev librsvg-dev \ + && npm ci --omit=dev --build-from-source=canvas \ + && apk del .build-deps + +# Copy Prisma schema and generate client +COPY prisma ./prisma +RUN npx prisma generate + +# Copy built application +COPY --from=builder /app/dist ./dist + +# Copy i18n files +COPY --from=builder /app/src/i18n ./dist/i18n + +# Copy league filter config files (critical: without these, feeder stores ALL matches) +COPY top_leagues.json basketball_top_leagues.json ./ + +# Set environment +ENV NODE_ENV=production + +# Expose port +EXPOSE 3000 + +# Start the application +CMD ["node", "dist/main.js"]