services: # ── .NET API + Razor Pages + Static Files ──────────────────────────────────── api: image: mirror.soroushasadi.com/drsousan/api:${API_TAG:-latest} build: # used by local: docker compose build context: ./DrSousan.Api dockerfile: Dockerfile container_name: drsousan_api restart: unless-stopped ports: - "${HOST_PORT:-5000}:8080" # http://localhost:5000 volumes: - db_data:/data # SQLite database (persistent) - uploads_data:/app/wwwroot/uploads # user-uploaded images (persistent) environment: # Database — SQLite stored on /data volume ConnectionStrings__Default: "Data Source=/data/drsousan.db" # JWT — CHANGE Jwt__Key in production (min 32 chars) Jwt__Key: "${JWT_KEY:-DrSousanSecretKey2024!ChangeThisInProduction!MinLength32Chars}" Jwt__Issuer: "${JWT_ISSUER:-DrSousanApi}" Jwt__Audience: "${JWT_AUDIENCE:-DrSousanAdmin}" # Admin login — override via .env file in production Admin__Username: "${ADMIN_USERNAME:-admin}" Admin__Password: "${ADMIN_PASSWORD:-admin123}" ASPNETCORE_ENVIRONMENT: "Production" # ── Named Volumes ──────────────────────────────────────────────────────────── volumes: db_data: driver: local uploads_data: driver: local