fix: Dockerfile workspace deps, PM2 log paths, jwt types, deploy script paths

This commit is contained in:
Eugenius-Anonymous
2026-06-08 15:41:13 +07:00
parent c97f7fd1a8
commit 0e2ad1d022
6 changed files with 36 additions and 45 deletions
+23 -33
View File
@@ -1,64 +1,54 @@
# ═══════════════════════════════════════════════
# Harat's Booking — Production Dockerfile
# ═══════════════════════════════════════════════
# Client is pre-built by deploy.ps1 (npm run build)
# This Dockerfile only handles server + copies dist
# ═══════════════════════════════════════════════
# ── Stage 1: Server Dependencies ──
FROM node:20-alpine AS server-deps
# ── Stage 1: Install production dependencies ──
FROM node:20-alpine AS deps
WORKDIR /app
COPY server/package.json server/package-lock.json* ./
RUN npm install --omit=dev
COPY package.json package-lock.json ./
COPY server/package.json ./server/package.json
COPY packages/shared/package.json ./packages/shared/package.json
COPY packages/shared/ ./packages/shared/
# ── Stage 2: Prisma Generate ──
FROM node:20-alpine AS prisma-gen
WORKDIR /app
RUN npm install --omit=dev --workspace=server --workspace=packages/shared
COPY --from=server-deps /app/node_modules ./node_modules
COPY server/prisma ./prisma
COPY server/package.json ./
COPY server/prisma ./server/prisma
RUN cd server && npx -y prisma generate
RUN npx prisma generate
# ── Stage 3: Final Image ──
# ── Stage 2: Final Image ──
FROM node:20-alpine
WORKDIR /app
# Runtime deps + pm2
# Create user + dirs FIRST
RUN addgroup -S harats && adduser -S harats -G harats \
&& mkdir -p /data/logs \
&& chown -R harats:harats /data /app
# Runtime deps + pm2 (install as root, then fix ownership)
RUN apk add --no-cache curl \
&& npm install -g pm2@latest \
&& pm2 install pm2-logrotate \
&& pm2 set pm2-logrotate:max_size 10M \
&& pm2 set pm2-logrotate:retain 7 \
&& pm2 set pm2-logrotate:compress true
&& pm2 set pm2-logrotate:compress true \
&& pm2 kill
# Don't run as root
RUN addgroup -S harats && adduser -S harats -G harats \
&& mkdir -p /data/logs \
&& chown -R harats:harats /data
# Copy node_modules
COPY --chown=harats:harats --from=deps /app/node_modules ./node_modules
# Copy production node_modules (with generated Prisma client)
COPY --chown=harats:harats --from=prisma-gen /app/node_modules ./node_modules
# Copy server compiled source
# Copy server compiled source (tsc outputs to dist/src/)
COPY --chown=harats:harats server/dist ./dist
COPY --chown=harats:harats server/prisma ./prisma
# Copy shared package (workspace dependency)
COPY --chown=harats:harats packages/shared/ ./node_modules/@harats/shared/
# Copy pre-built client dist
COPY --chown=harats:harats client/dist ./public
# Copy ecosystem config
# Copy ecosystem config + version
COPY --chown=harats:harats ecosystem.config.cjs ./ecosystem.config.cjs
# Copy version.json
COPY --chown=harats:harats version.json ./version.json
# Version info (injected at build time)
# Version info
ARG BUILD_VERSION=0.0.0
ARG BUILD_DATE=unknown
RUN echo "{\"version\":\"${BUILD_VERSION}\",\"build\":\"$(echo $BUILD_DATE | cut -c1-16)\",\"buildDate\":\"${BUILD_DATE}\"}" > version.json