version: '3.8'

services:
  lan-manager:
    build:
      context: .
      dockerfile: Dockerfile
    image: lan-manager:latest
    container_name: lan-manager
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      # 数据持久化：SQLite 数据库和上传文件
      - ./data:/app/data
    environment:
      # 基础配置
      - HOST=0.0.0.0
      - PORT=8080
      - DATA_DIR=/app/data
      - DB_PATH=/app/data/lan-manager.db
      
      # 管理员配置（⚠️ 生产环境务必修改）
      - ADMIN_USER=admin
      - ADMIN_PASS=admin
      
      # 安全密钥（⚠️ 生产环境务必修改）
      - SESSION_SECRET=lan-manager-secret-change-in-production
      - ENCRYPT_KEY=lan-manager-default-key-change-in-production
      
      # 功能配置
      - PING_INTERVAL=60
      - SSH_TIMEOUT=10
      - LOG_RETENTION_DAYS=0
      - UI_REFRESH_INTERVAL=10000
      
      # 日志级别
      - LOG_LEVEL=info
    
    # 如果需要容器能 ping 通局域网其他机器，可以使用 host 网络模式
    # 或者使用 macvlan 网络让容器获得独立 IP
    # network_mode: host
    
    # 如果需要 ICMP ping 权限，可以添加 capabilities
    # cap_add:
    #   - NET_RAW
    
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/api/health"]
      interval: 30s
      timeout: 5s
      start_period: 10s
      retries: 3
