# ============================================================ # AIOps 单容器 docker-compose(embed 模式) # 前端嵌入后端二进制,不需要独立 nginx 容器 # 用法: docker-compose -f docker-compose.embed.yml up -d --build # 署名 Logan.Li # ============================================================ version: '3.8' services: mysql: image: mysql:8.0 container_name: aiops-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: aiops MYSQL_USER: aiops MYSQL_PASSWORD: aiops_pass_2026 TZ: Asia/Shanghai ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql command: > --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p$$MYSQL_ROOT_PASSWORD"] interval: 10s timeout: 5s retries: 10 start_period: 30s networks: - aiops-network redis: image: redis:7-alpine container_name: aiops-redis restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - aiops-network # 单容器:后端 API (:8080) + 嵌入前端 (:8080) # nginx 不再需要,gin 直接服务静态文件 aiops: build: context: . dockerfile: backend/Dockerfile.embed container_name: aiops-app restart: unless-stopped ports: - "80:8080" # 前端 + API 都走 8080 - "8080:8080" # 也可以直接访问 8080 volumes: - ./backend/config.yaml:/app/config.yaml - app_logs:/app/logs - app_uploads:/app/uploads depends_on: mysql: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - aiops-network volumes: mysql_data: redis_data: app_logs: app_uploads: networks: aiops-network: driver: bridge