From 5e973d7f2cb2b66890affbc26528dfaf5fb7f93e Mon Sep 17 00:00:00 2001 From: adonis Date: Wed, 5 Aug 2026 20:54:35 +0330 Subject: [PATCH] Use Iranian npm mirror and rewrite package-lock URLs npm ci ignores registry config when lockfile points at registry.npmjs.org; rewrite resolved URLs to mirror.iranserver.com before install. Co-authored-by: Cursor --- .env.example | 4 ++++ Dockerfile | 27 ++++++++++++++++++--------- docker-compose.yml | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index 8886278..1070394 100644 --- a/.env.example +++ b/.env.example @@ -8,6 +8,10 @@ POSTGRES_DB=fabric_trade POSTGRES_PORT=5432 API_PORT=3000 RUN_SEED=false +# مخزن npm ایرانی برای بیلد Docker +NPM_REGISTRY=https://mirror.iranserver.com/npm/ +# اگر Bake/buildx ارور داد: +COMPOSE_BAKE=false JWT_SECRET="fabric-trade-dev-secret-change-me" JWT_EXPIRES_IN="7d" diff --git a/Dockerfile b/Dockerfile index 380f483..6559bfa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,28 @@ -# میرور npm برای سرورهای ایران -ARG NPM_REGISTRY=https://registry.npmmirror.com +# مخزن npm ایرانی (قابل تغییر با --build-arg) +ARG NPM_REGISTRY=https://mirror.iranserver.com/npm/ FROM node:22-alpine AS builder -# حتماً دوباره با default تعریف شود؛ وگرنه بعد از FROM خالی می‌ماند -ARG NPM_REGISTRY=https://registry.npmmirror.com +ARG NPM_REGISTRY=https://mirror.iranserver.com/npm/ WORKDIR /app ENV NPM_CONFIG_REGISTRY=${NPM_REGISTRY} COPY package.json package-lock.json ./ -RUN npm config set fetch-retries 5 \ - && npm config set fetch-retry-mintimeout 20000 \ - && npm config set fetch-retry-maxtimeout 120000 \ - && npm ci --no-audit --no-fund \ - && echo "npm ci done via $NPM_CONFIG_REGISTRY" + +# npm ci از URLهای داخل package-lock استفاده می‌کند؛ باید میرور ایرانی شود +RUN set -eux; \ + mirror="$(echo "${NPM_REGISTRY}" | sed 's:/*$::')"; \ + sed -i \ + -e "s|https://registry.npmjs.org|${mirror}|g" \ + -e "s|https://registry.npmmirror.com|${mirror}|g" \ + package-lock.json; \ + npm config set registry "${mirror}/"; \ + npm config set fetch-retries 5; \ + npm config set fetch-retry-mintimeout 20000; \ + npm config set fetch-retry-maxtimeout 120000; \ + echo "Using npm registry: ${mirror}"; \ + npm ci --no-audit --no-fund; \ + echo "npm ci done" COPY prisma ./prisma COPY prisma.config.ts ./ diff --git a/docker-compose.yml b/docker-compose.yml index 2c8648c..4e90066 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,7 @@ services: context: . dockerfile: Dockerfile args: - NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmmirror.com} + NPM_REGISTRY: ${NPM_REGISTRY:-https://mirror.iranserver.com/npm/} container_name: fabric_trade_api restart: unless-stopped depends_on: