# ============================================================ # LICA 生产流转管理系统 — 独立实例(与 IRIS 版同机共存) # 启动: docker compose up -d --build # 停止: docker compose down # 日志: docker compose logs -f # # ⚠️ 首次部署必须先跑数据库迁移,否则业务接口全部 500: # docker compose exec lica_backend python -m alembic upgrade head # ============================================================ name: track-lica services: # ============================================================ # PostgreSQL 15 + pgvector — LICA 独立库 # ============================================================ db: image: pgvector/pgvector:pg15 container_name: lica_db restart: unless-stopped environment: POSTGRES_USER: lica POSTGRES_PASSWORD: bc7e44ba7aa424b5a1d95a53dec824fc POSTGRES_DB: lica_production ports: - "8032:5432" volumes: # ⚠️ 绝不能与 IRIS 的 track_pgdata 共用,否则两个部门写同一个库 - lica_pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U lica -d lica_production"] interval: 10s timeout: 5s retries: 5 # ============================================================ # FastAPI 后端 — --reload 热更新 # 服务名用 lica_backend 而非 backend:服务名会作为网络别名注册到 # projects_default,与 IRIS 实例的 backend 重名会导致将来任何一方 # 写 http://backend:8000 时随机打到另一个部门。 # ============================================================ lica_backend: build: context: ./backend dockerfile: Dockerfile.dev container_name: lica_backend restart: unless-stopped environment: # ⚠️ 主机名必须是 lica_db,绝不能写 db —— # MOM 的 compose 服务名就叫 db,在 projects_default 网络上 # 会把本后端解析到 MOM 生产库并写入。 DATABASE_URL: postgresql+asyncpg://lica:bc7e44ba7aa424b5a1d95a53dec824fc@lica_db:5432/lica_production # ⚠️ 必须与 IRIS 不同:get_current_user 只验签名不查库, # 两边共用密钥则 IRIS 签发的 token 可直接访问 LICA 接口。 SECRET_KEY: aQy1zyEJY50OJlYrZ2OkNgQN3N46F4bvjYVdva0y4N3wpfaZotf9NKBTZ0CTDeLD DEBUG: "true" # ---- 组织隔离(本实例唯一的部门开关,供登录/人员/物料三处 SQL 引用)---- ORG_DEPARTMENT: LICA MATERIAL_CATEGORY_PREFIX: "LICA/" # 8030 = PC 管理端;5173/8020 = track-uniapp 的 H5 调试服务 # (HBuilderX「运行到浏览器」起在 5173,直接跑 vite 按 track-uniapp/vite.config.ts 是 8020)。 # ⚠️ 漏了 uniapp 的来源时,浏览器会在 CORS 预检阶段就掐掉请求, # 表现是「点登录没反应」,且控制台只报一句笼统的 404/400。 CORS_ORIGINS: '["http://localhost:8030","https://localhost:8030","http://192.168.9.80:8030","https://192.168.9.80:8030","http://localhost:5173","https://localhost:5173","http://192.168.9.80:5173","https://192.168.9.80:5173","http://localhost:8020","https://localhost:8020","tauri://localhost"]' # MOM 老系统数据库 — 通过容器名解析(projects_default 网络内 DNS),不要写死 IP MOM_DB_HOST: inventory_db MOM_DB_PORT: "5432" # MOM 回调验签 Key — 暂与 IRIS 相同:MOM 侧目前只有单个 TRACK_WEBHOOK_KEY, # 且回调地址写死指向 IRIS 的 track_backend。待 MOM 支持按部门双推后, # 再决定是否给 LICA 单独签发。(在此之前 LICA 收不到出入库联动) TRACK_WEBHOOK_KEY: 2ce5fedb48fde3fd7e0abf67472a5027b03e9ae6f19cf768 ports: - "8031:8000" volumes: - ./backend:/app depends_on: db: condition: service_healthy networks: - default - mom_net # ============================================================ # Vite + React 前端 — HMR 热更新 # ============================================================ frontend: build: context: ./frontend dockerfile: Dockerfile.dev container_name: lica_frontend restart: unless-stopped environment: VITE_API_BASE_URL: /api/v1 ports: - "8030:1420" volumes: - ./frontend:/app - /app/node_modules # 匿名卷,不覆盖容器里的 node_modules depends_on: - lica_backend networks: mom_net: external: true name: projects_default # MOM 系统所在网络(IRIS 实例也在此网络上) volumes: lica_pgdata: name: lica_pgdata