version: '3.8'

services:
  # --- 数据库服务 ---
  db:
    image: postgres:15-alpine
    container_name: inventory_db
    restart: always
    environment:
      POSTGRES_USER: test
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: inventory_system
    volumes:
      # 数据持久化
      - ./pgdata_docker:/var/lib/postgresql/data
    ports:
      - "5434:5432"

  # --- 后端 Flask 服务 ---
  backend:
    build:
      context: ./inventory-backend  # 指向你的新后端目录
    container_name: inventory_api
    restart: always
    ports:
      - "8000:8000"
    volumes:
      - ./inventory-backend:/app # 挂载代码，实现热更新
      # 【核心修改】显式挂载 uploads 目录，确保图片持久化且宿主机可见
      - ./inventory-backend/uploads:/app/uploads
    command: gunicorn -c gunicorn.conf.py run:app --reload
    environment:
      # Host 必须写 'db'
      DATABASE_URL: postgresql://test:1234@db:5432/inventory_system
    depends_on:
      - db

  # --- 前端 Vue 开发服务 ---
  frontend:
    build:
      context: ./inventory-web
    container_name: inventory_ui
    restart: always
    # 把本地代码挂载进去，实现“热更新”
    volumes:
      - ./inventory-web:/app
      - /app/node_modules  # 排除 node_modules，防止冲突
    # 开发模式端口通常是 5173
    ports:
      - "5173:5173"
    depends_on:
      - backend