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>
This commit is contained in:
+19
-15
@@ -1,7 +1,15 @@
|
||||
# Build
|
||||
# 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
|
||||
|
||||
@@ -10,29 +18,25 @@ COPY prisma.config.ts ./
|
||||
COPY tsconfig.json tsconfig.build.json nest-cli.json ./
|
||||
COPY src ./src
|
||||
|
||||
RUN npx prisma generate
|
||||
RUN npm run build
|
||||
RUN npx prisma generate \
|
||||
&& npm run build \
|
||||
&& npm prune --omit=dev \
|
||||
&& npm install prisma ts-node typescript --no-save --registry=${NPM_REGISTRY}
|
||||
|
||||
# Production
|
||||
# Production image — بدون apk / بدون npm دوباره
|
||||
FROM node:22-alpine AS runner
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
RUN apk add --no-cache openssl
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci --omit=dev && npm install prisma ts-node typescript --no-save
|
||||
|
||||
COPY prisma ./prisma
|
||||
COPY prisma.config.ts ./
|
||||
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/node_modules/.prisma ./node_modules/.prisma
|
||||
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
|
||||
COPY --from=builder /app/prisma ./prisma
|
||||
COPY --from=builder /app/prisma.config.ts ./
|
||||
COPY docker-entrypoint.sh ./
|
||||
|
||||
RUN chmod +x docker-entrypoint.sh \
|
||||
&& npx prisma generate
|
||||
RUN chmod +x docker-entrypoint.sh
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
|
||||
@@ -37,6 +37,15 @@ RUN_SEED=true docker compose up -d --build
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
اگر بیلد بهخاطر رجیستری npm یا Alpine خطا داد (رایج روی سرورهای ایران):
|
||||
|
||||
```bash
|
||||
# پیشفرض Dockerfile از میرور npmmirror استفاده میکند.
|
||||
# در صورت نیاز:
|
||||
docker compose build --build-arg NPM_REGISTRY=https://registry.npmmirror.com
|
||||
RUN_SEED=true docker compose up -d
|
||||
```
|
||||
|
||||
- API روی `127.0.0.1:3000` بالا میآید
|
||||
- مایگریشن موقع استارت کانتینر اجرا میشود
|
||||
- LiteSpeed را Reverse Proxy کنید به `http://127.0.0.1:3000`
|
||||
|
||||
Reference in New Issue
Block a user