services: postgres: image: postgres:16-alpine container_name: fabric_trade_db restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-fabric} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fabric123} POSTGRES_DB: ${POSTGRES_DB:-fabric_trade} ports: - '${POSTGRES_PORT:-5432}:5432' volumes: - fabric_pg_data:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB'] interval: 5s timeout: 5s retries: 10 api: build: context: . dockerfile: Dockerfile.prebuilt container_name: fabric_trade_api restart: unless-stopped depends_on: postgres: condition: service_healthy environment: DATABASE_URL: postgresql://${POSTGRES_USER:-fabric}:${POSTGRES_PASSWORD:-fabric123}@postgres:5432/${POSTGRES_DB:-fabric_trade}?schema=public JWT_SECRET: ${JWT_SECRET:?JWT_SECRET is required} JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-7d} PORT: 3000 MOCK_OTP_CODE: ${MOCK_OTP_CODE:-1234} OTP_TTL_MINUTES: ${OTP_TTL_MINUTES:-5} SMS_ENABLED: ${SMS_ENABLED:-true} SMS_API_URL: ${SMS_API_URL:-http://185.231.112.101/api/createsms} SMS_SECRET_KEY: ${SMS_SECRET_KEY:-} SMS_PLATFORM: ${SMS_PLATFORM:-rayegansms} SMS_HOST: ${SMS_HOST:-پارچه} SMS_APP_NAME: ${SMS_APP_NAME:-پارچه} BODY_LIMIT: ${BODY_LIMIT:-25mb} TZ: ${TZ:-Asia/Tehran} NODE_ENV: ${NODE_ENV:-production} RUN_SEED: ${RUN_SEED:-false} ports: - '127.0.0.1:${API_PORT:-3000}:3000' volumes: fabric_pg_data: