From 1b249e0b57aa2ca47fbaa0480f1927f13d08ef4a Mon Sep 17 00:00:00 2001 From: adonis Date: Wed, 5 Aug 2026 21:29:21 +0330 Subject: [PATCH] Load runtime config from server .env via compose env_file Keep secrets out of the image; only override DATABASE_URL host for the Docker network. Co-authored-by: Cursor --- .env.example | 25 ++++++++++++++----------- docker-compose.image.yml | 14 +++++++------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/.env.example b/.env.example index 486d97f..669d599 100644 --- a/.env.example +++ b/.env.example @@ -1,20 +1,23 @@ -# Local / host Prisma -DATABASE_URL="postgresql://fabric:fabric123@localhost:5432/fabric_trade?schema=public" +# این فایل فقط روی سرور/لوکال می‌ماند و داخل گیت commit نمی‌شود. +# ایمیج Docker سکرت ندارد؛ همه تنظیمات از اینجا خوانده می‌شود. -# Docker Compose POSTGRES_USER=fabric POSTGRES_PASSWORD=fabric123 POSTGRES_DB=fabric_trade POSTGRES_PORT=5432 + +# برای ابزارهای روی خود سرور (خارج از Docker) +DATABASE_URL=postgresql://fabric:fabric123@localhost:5432/fabric_trade?schema=public + API_PORT=3000 +PORT=3000 +API_IMAGE=fabric-trade-api:latest RUN_SEED=false -# میرور npm کامل (سازگار با package-lock) -# توجه: mirror.iranserver.com/npm ناقص است و 404 می‌دهد + +JWT_SECRET=change-me-to-a-long-random-string +JWT_EXPIRES_IN=7d +MOCK_OTP_CODE=123456 +OTP_TTL_MINUTES=5 + NPM_REGISTRY=https://registry.npmmirror.com COMPOSE_BAKE=false - -JWT_SECRET="fabric-trade-dev-secret-change-me" -JWT_EXPIRES_IN="7d" -PORT=3000 -MOCK_OTP_CODE="123456" -OTP_TTL_MINUTES=5 diff --git a/docker-compose.image.yml b/docker-compose.image.yml index 113dec0..29076e5 100644 --- a/docker-compose.image.yml +++ b/docker-compose.image.yml @@ -3,6 +3,8 @@ services: image: postgres:16-alpine container_name: fabric_trade_db restart: unless-stopped + env_file: + - .env environment: POSTGRES_USER: ${POSTGRES_USER:-fabric} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fabric123} @@ -18,21 +20,19 @@ services: retries: 10 api: - # ایمیج از قبل روی سرور load شده (بدون build) image: ${API_IMAGE:-fabric-trade-api:latest} container_name: fabric_trade_api restart: unless-stopped depends_on: postgres: condition: service_healthy + # سکرت‌ها و تنظیمات از فایل .env روی خود سرور + env_file: + - .env environment: + # داخل شبکه Docker هاست دیتابیس همیشه "postgres" است DATABASE_URL: postgresql://${POSTGRES_USER:-fabric}:${POSTGRES_PASSWORD:-fabric123}@postgres:5432/${POSTGRES_DB:-fabric_trade}?schema=public - JWT_SECRET: ${JWT_SECRET:-fabric-trade-dev-secret-change-me} - JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-7d} - PORT: 3000 - MOCK_OTP_CODE: ${MOCK_OTP_CODE:-123456} - OTP_TTL_MINUTES: ${OTP_TTL_MINUTES:-5} - RUN_SEED: ${RUN_SEED:-false} + PORT: ${PORT:-3000} ports: - '127.0.0.1:${API_PORT:-3000}:3000'