diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bc738f0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# Kleap Auto-Generated Dockerfile +# DO NOT use Nixpacks - it causes Docker buildx cache mount deadlocks +# See coolify-deployer.ts for full explanation + +FROM node:22-alpine + +# Install build dependencies for native modules (sharp, etc.) +# bash: Required for build scripts that use bash +# libc6-compat: Required for sharp on Alpine +# python3 make g++: Required for node-gyp builds +RUN apk add --no-cache bash libc6-compat python3 make g++ + +WORKDIR /app + +# Copy package files first (for better Docker layer caching) +COPY package*.json ./ + +# ╔═══════════════════════════════════════════════════════════════════════════╗ +# ║ CRITICAL: NO --mount=type=cache HERE! ║ +# ║ ║ +# ║ Nixpacks generates: RUN --mount=type=cache,id=xxx,target=/root/.npm ... ║ +# ║ This causes DEADLOCK on Coolify/Hetzner Docker buildx. ║ +# ║ ║ +# ║ We use simple RUN without cache mount = reliable builds every time. ║ +# ╚═══════════════════════════════════════════════════════════════════════════╝ +RUN npm install --legacy-peer-deps + +# Copy source code +COPY . . + +# Build the Next.js app +RUN npm run build + +# Expose port and start +EXPOSE 3000 +CMD ["npm", "start"]