Commit 51958eda authored by Administrator's avatar Administrator

Update Dockerfile.backend via Son of Anton

parent 24c69f00
FROM node:20-alpine AS base
RUN apk add --no-cache libc6-compat openssl
FROM node:20-alpine AS builder
WORKDIR /app
RUN apk add --no-cache libc6-compat openssl python3 make g++
WORKDIR /build
# Copy everything
COPY package*.json ./
COPY backend/package*.json ./backend/
COPY shared/package*.json ./shared/
COPY prisma/ ./prisma/
# Copy prisma schema (single file, consolidated)
COPY prisma/schema.prisma ./prisma/schema.prisma
# Copy shared package
COPY shared/ ./shared/
# Install backend deps
WORKDIR /app/backend
COPY backend/package.json backend/package-lock.json* ./backend/
WORKDIR /build/backend
RUN npm install --legacy-peer-deps
# Copy source
WORKDIR /app
COPY shared/ ./shared/
# Copy backend source
WORKDIR /build
COPY backend/ ./backend/
COPY prisma/ ./backend/prisma/
# Generate Prisma
WORKDIR /app/backend
# Put prisma inside backend
RUN cp -r /build/prisma /build/backend/prisma
WORKDIR /build/backend
# Generate Prisma client
RUN npx prisma generate --schema=./prisma/schema.prisma
# Build
RUN npm run build
# Production stage
FROM node:20-alpine AS runner
# ---- Production ----
FROM node:20-alpine
RUN apk add --no-cache libc6-compat openssl
WORKDIR /app
ENV NODE_ENV=production
COPY --from=base /app/backend/dist ./dist
COPY --from=base /app/backend/node_modules ./node_modules
COPY --from=base /app/backend/prisma ./prisma
COPY --from=base /app/backend/package.json ./
COPY --from=builder /build/backend/dist ./dist
COPY --from=builder /build/backend/node_modules ./node_modules
COPY --from=builder /build/backend/prisma ./prisma
COPY --from=builder /build/backend/package.json ./
ENV NODE_ENV=production
EXPOSE 3001
CMD ["sh", "-c", "npx prisma migrate deploy --schema=./prisma/schema.prisma && node dist/main.js"]
\ No newline at end of file
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD wget -qO- http://localhost:3001/api/health || exit 1
CMD ["sh", "-c", "npx prisma migrate deploy --schema=./prisma/schema.prisma 2>/dev/null || true; node dist/main.js"]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment