# ─── 托管 DB/Redis override(阿里云 RDS + Redis 标准版)──────────────────
# 默认(自带 PG/Redis)不受影响;走托管时叠加本 override 即可,应用代码零改动。
#
# 用法(二选一):
#   COMPOSE_MANAGED=1 bash deploy/deploy-prod.sh
#   docker compose -f docker-compose.prod.yml -f docker-compose.managed.yml \
#     --env-file apps/pac-service/.env --env-file apps/pac-web/.env <cmd>
#
# 前提:.env 的 DATABASE_URL / REDIS_URL 指向托管端点
#   gen-env 生成时传 DATABASE_URL='postgresql://user:pwd@<rds-host>:5432/pac?schema=public' \
#                     REDIS_URL='redis://:<pwd>@<redis-host>:6379'  即可(见 deploy/gen-env.sh)。
#
# ⚠️ Redis 用【标准版(单机/主从)】,别用集群版 —— 集群要 hash-tag + 集群客户端 = 改代码。
# ⚠️ RDS 与应用【同 VPC / 同可用区】—— 重算含大量 DB 往返,跨网络延迟会显著拖慢。
services:
  # 自带 PG/Redis 挪到未激活 profile → 本 override 下不启动(托管接管)
  postgres:
    profiles: ["bundled-db-off"]
  redis:
    profiles: ["bundled-db-off"]

  # 端口绑定:托管环境经【远端网关】(如 friday 的 lb1.friday.tech,独立主机)转发,
  #   网关走 ECS 私网 IP 到达应用 → 必须绑 0.0.0.0(非 loopback),否则网关连不上 → 502。
  #   base compose 绑 127.0.0.1 是给【本机代理型】部署(老/测试机自带 nginx→loopback)用的;
  #   那类机器不叠加本 override,仍 127.0.0.1。安全由云安全组保证(只放行网关/VPC,不对公网开)。
  pac-web:
    ports: !override
      - "3100:3100"

  # docs 同理(经网关到达);base 绑 127.0.0.1,托管环境需 0.0.0.0,免同样漂移。
  pac-docs:
    ports: !override
      - "3102:3102"

  # 迁移容器:去掉对自带 postgres 的依赖,DB 指向托管
  pac-migrate:
    depends_on: !reset null
    environment:
      DATABASE_URL: ${DATABASE_URL:?托管模式需在 .env 设 DATABASE_URL(指向 RDS)}

  # 后端:只依赖迁移完成;DB/Redis 指向托管(覆盖自带内网地址)
  pac-service:
    depends_on: !override
      pac-migrate:
        condition: service_completed_successfully
    ports: !override # 同 pac-web:网关经私网 IP 到达,需绑 0.0.0.0
      - "3101:3101"
    environment:
      DATABASE_URL: ${DATABASE_URL:?托管模式需在 .env 设 DATABASE_URL(指向 RDS)}
      REDIS_URL: ${REDIS_URL:?托管模式需在 .env 设 REDIS_URL(指向托管 Redis)}
