Files
fabric_trade_server/Dockerfile
T

54 lines
1.6 KiB
Docker
Raw Normal View History

# مخزن npm ایرانی (قابل تغییر با --build-arg)
ARG NPM_REGISTRY=https://mirror.iranserver.com/npm/
FROM node:22-alpine AS builder
ARG NPM_REGISTRY=https://mirror.iranserver.com/npm/
WORKDIR /app
ENV NPM_CONFIG_REGISTRY=${NPM_REGISTRY}
COPY package.json package-lock.json ./
# 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 ./
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 --no-audit --no-fund --registry=${NPM_REGISTRY}
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"]