version: '3.8' services: # --- 数据库 (已修改为自带 pgvector 的镜像) --- db: image: pgvector/pgvector:pg15 container_name: inventory_db_prod restart: always environment: POSTGRES_USER: prod_user POSTGRES_PASSWORD: StrongPassword123! POSTGRES_DB: inventory_system volumes: # 数据卷保持不变,你的历史数据不会丢失! - ./pgdata_prod:/var/lib/postgresql/data ports: - "5432:5432" # --- 后端 (Flask) (保持不变) --- backend: build: context: ./inventory-backend container_name: inventory_api_prod restart: always expose: - "8000" volumes: - ./uploads_prod:/app/uploads - ./models_prod:/app/models command: gunicorn -c gunicorn.conf.py run:app environment: DATABASE_URL: postgresql://prod_user:StrongPassword123!@db:5432/inventory_system MAIL_ENABLED: "true" MAIL_SERVER: smtp.mxhichina.com MAIL_PORT: "465" MAIL_USERNAME: wms@iris-rs.cn MAIL_PASSWORD: Q7nYyyESWlaThKjx MAIL_DEFAULT_SENDER: wms@iris-rs.cn MAIL_USE_SSL: "true" MAIL_USE_TLS: "false" # Track 系统联动(扫码入库/出库/Webhook 通知) # ★ 生产地址硬编码为容器名 track_backend_prod(同一服务器 mom_net 网络内互通), # 避免被服务器上残留的 .env 覆盖成 dev 的 track_backend TRACK_WEBHOOK_URL: http://track_backend_prod:8000/api/v1/external/webhooks/mom-inbound TRACK_WEBHOOK_KEY: ${TRACK_WEBHOOK_KEY:-2ce5fedb48fde3fd7e0abf67472a5027b03e9ae6f19cf768} TRACK_API_URL: http://track_backend_prod:8000 TRACK_OUTBOUND_WEBHOOK_URL: http://track_backend_prod:8000/api/v1/external/webhooks/mom-outbound depends_on: - db # 加入 mom_net 外部网络,与 Track 生产容器互通 networks: - default - mom_net # --- 前端 (Nginx + Vue) (包含 HTTPS 配置) --- frontend: build: context: ./inventory-web dockerfile: Dockerfile.prod container_name: inventory_ui_prod restart: always ports: - "80:80" # HTTP 端口 - "443:443" # 【新增】HTTPS 端口 volumes: # 【新增】挂载 SSL 证书 # 左边是服务器路径 ./ssl/nginx.crt # 右边是容器内路径 /etc/nginx/ssl/nginx.crt (必须和报错日志里的一致) - ./ssl/nginx.crt:/etc/nginx/ssl/nginx.crt - ./ssl/nginx.key:/etc/nginx/ssl/nginx.key depends_on: - backend networks: # 与 Track 生产容器共享的外部网络(Track prod 的 mom_net 也叫这个名字) mom_net: external: true name: inventory-app_default