# infra/deploy/docker-compose-ov.yml —— 海外(ov)生产编排(P5-prep Task 1)。 # 只跑两个容器:api-ov(ov 公开读/互动/WS + sync-inbox + emergency 通道,全部 # 内嵌——核实自 services/api/src/app-ov.module.ts)与 web-ov(nginx 网关)。 # 【无 sync 进程】:cn→ov 内容同步的发送器/对账/统计回传全在 cn 侧 # (docker-compose.cn.yml 的 sync 服务),跨地域经公网连 ov 的 API + MySQL。 # # 使用:同目录放 .env.production-ov(模板见仓库根 .env.production.example-ov); # 网络与 1Panel 复用说明同 docker-compose.cn.yml 头注。 name: photo-live-ov x-logging: &default-logging driver: json-file options: { max-size: "10m", max-file: "3" } services: api-ov: image: ${SERVER_IMAGE:-photo-live-server:latest} command: ["api-ov"] init: true env_file: .env.production-ov environment: PORT_OV: "8081" # main-ov.ts 读 PORT_OV;容器内固定 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-fs", "http://127.0.0.1:8081/v1/health"] interval: 30s timeout: 5s retries: 5 start_period: 20s logging: *default-logging networks: [photo-net] web-ov: image: ${WEB_IMAGE:-photo-live-web:latest} init: true environment: API_UPSTREAM: http://api-ov:8081 ports: # 同 cn:默认只绑回环供同机 OpenResty 反代(ov 侧主机端口用 8089 区分)。 - "127.0.0.1:8089:80" restart: unless-stopped depends_on: api-ov: { condition: service_healthy } healthcheck: test: ["CMD", "curl", "-fs", "http://127.0.0.1/"] interval: 30s timeout: 5s retries: 5 start_period: 10s logging: *default-logging networks: [photo-net] networks: photo-net: # 说明同 docker-compose.cn.yml(1Panel 网络名按实际调整;或改宿主机 IP 连接)。 name: 1panel-network external: true