From db095eb519a1f6e5e6ed659a02b9cec3860fee31 Mon Sep 17 00:00:00 2001 From: Tudor Stanciu Date: Fri, 3 Oct 2025 19:10:51 +0300 Subject: [PATCH] refactor: consolidate Dockerfile stages and improve build process for frontend and backend --- Dockerfile | 70 +++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/Dockerfile b/Dockerfile index a2ae905..5b5ca44 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,32 @@ # Multi-stage Dockerfile for Bitip GeoIP Service -# Stage 1: Build frontend -FROM node:24.9-alpine3.21 AS frontend-builder +# Stage 1: Build application +FROM node:24.9-alpine3.21 AS builder -WORKDIR /app/frontend +WORKDIR /app -# Copy frontend package files -COPY src/frontend/package*.json ./ -RUN npm ci --only=production +# Copy workspace configuration +COPY package*.json ./ -# Copy frontend source -COPY src/frontend/ ./ +# Copy workspace package files +COPY src/backend/package*.json ./src/backend/ +COPY src/frontend/package*.json ./src/frontend/ -# Build frontend -RUN npm run build - -# Stage 2: Build backend -FROM node:24.9-alpine3.21 AS backend-builder - -WORKDIR /app/backend - -# Copy backend package files -COPY src/backend/package*.json ./ -COPY src/backend/tsconfig.json ./ +# Install all dependencies (including devDependencies for build) RUN npm ci -# Copy backend source -COPY src/backend/ ./ +# Copy source code +COPY src/ ./src/ +COPY tsconfig.json ./ +COPY .gitattributes ./ -# Build backend +# Copy configuration files needed for build +COPY ReleaseNotes.json ./ +COPY Overview.json ./ + +# Build both frontend and backend RUN npm run build -# Stage 3: Production image +# Stage 2: Production image FROM node:24.9-alpine3.21 # Build arguments for versioning @@ -51,10 +47,11 @@ LABEL org.opencontainers.image.authors="Tudor Stanciu