Files
fabric_trade_server/Dockerfile
T
mohmdsdgandCursor 9a9566dd50 Fix Docker build for restricted Alpine CDN access
Drop apk openssl (node alpine already has it) and use npmmirror by default so Iranian servers can build without Alpine TLS failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 20:37:59 +03:30

44 lines
1.2 KiB
Docker

# syntax=docker/dockerfile:1
# میرور npm برای سرورهای ایران (قابل تغییر با --build-arg)
ARG NPM_REGISTRY=https://registry.npmmirror.com
FROM node:22-alpine AS builder
ARG NPM_REGISTRY
WORKDIR /app
# openssl از قبل داخل node:alpine هست؛ apk را حذف کردیم چون CDN آلپاین روی خیلی از سرورها TLS error می‌دهد
ENV NPM_CONFIG_REGISTRY=${NPM_REGISTRY}
COPY package.json package-lock.json ./
RUN npm ci
COPY prisma ./prisma
COPY prisma.config.ts ./
COPY tsconfig.json tsconfig.build.json nest-cli.json ./
COPY src ./src
RUN npx prisma generate \
&& npm run build \
&& npm prune --omit=dev \
&& npm install prisma ts-node typescript --no-save --registry=${NPM_REGISTRY}
# Production image — بدون apk / بدون npm دوباره
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/package.json /app/package-lock.json ./
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/prisma.config.ts ./
COPY docker-entrypoint.sh ./
RUN chmod +x docker-entrypoint.sh
EXPOSE 3000
ENTRYPOINT ["./docker-entrypoint.sh"]