From d6a67fc70f59d7eb34a7beae6851d5ecdd226435 Mon Sep 17 00:00:00 2001 From: Damjan Savic Date: Mon, 19 Jan 2026 23:44:21 +0100 Subject: [PATCH] Fix: Update Docker config to use pnpm instead of npm - Switched from npm ci to pnpm install --frozen-lockfile - Added corepack enable for pnpm support - Added .dockerignore for cleaner builds Co-Authored-By: Claude Opus 4.5 --- .dockerignore | 42 ++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 14 +++++++++----- docker-compose.yml | 9 +++++++-- 3 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4ebb3b8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,42 @@ +# Dependencies +node_modules +.pnpm-store + +# Build outputs +.next +out +build +dist + +# Development +.env*.local +.env.development +.env.test + +# IDE +.idea +.vscode +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Git +.git +.gitignore + +# Docker +Dockerfile* +docker-compose* +.dockerignore + +# Misc +*.md +!README.md +*.log +npm-debug.log* +pnpm-debug.log* +coverage +.nyc_output diff --git a/Dockerfile b/Dockerfile index ad6fbf6..07d2b58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,14 +2,18 @@ # Base image FROM node:20-alpine AS base +RUN apk add --no-cache libc6-compat +RUN corepack enable && corepack prepare pnpm@latest --activate # Install dependencies only when needed FROM base AS deps WORKDIR /app -# Install dependencies based on the preferred package manager -COPY package.json package-lock.json* ./ -RUN npm ci +# Copy package files +COPY package.json pnpm-lock.yaml ./ + +# Install dependencies +RUN pnpm install --frozen-lockfile # Rebuild the source code only when needed FROM base AS builder @@ -20,10 +24,10 @@ COPY . . # Next.js collects anonymous telemetry data - disable it ENV NEXT_TELEMETRY_DISABLED=1 -RUN npm run build +RUN pnpm run build # Production image, copy all the files and run next -FROM base AS runner +FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production diff --git a/docker-compose.yml b/docker-compose.yml index 704dfc3..857ce1b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,6 @@ -version: '3.8' - services: portfolio: + container_name: portfolio-website build: context: . dockerfile: Dockerfile @@ -14,3 +13,9 @@ services: - NEXT_PUBLIC_GA_TRACKING_ID=${NEXT_PUBLIC_GA_TRACKING_ID} - NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL} restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s