- 之前 default 会被 .env 覆盖成 dev 的 track_backend,生产联动失效 - 改为硬编码 track_backend_prod:8000,仅密钥保留可配置
77 lines
2.6 KiB
YAML
77 lines
2.6 KiB
YAML
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 |