161 lines
5.9 KiB
YAML
161 lines
5.9 KiB
YAML
# ============================================================
|
|
# Qihu-AIFlow 智能自动化PaaS平台 - Docker Compose 配置
|
|
# ============================================================
|
|
# 部署方式:
|
|
# docker compose up -d
|
|
# 或: docker compose up -d --build (重建镜像)
|
|
#
|
|
# 端口说明:
|
|
# 前端 (Nginx): 宿主机 12888 -> 容器内 8080
|
|
# 后端 (Uvicorn): 宿主机 18080 -> 容器内 18080
|
|
# ============================================================
|
|
|
|
services:
|
|
aiflow:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: qihuaiflow:with-deps
|
|
container_name: qihu-aiflow
|
|
ports:
|
|
- "12888:8080"
|
|
- "18080:18080"
|
|
environment:
|
|
- DATABASE_URL=postgresql+psycopg://aiflow:pwd2026@qihu-aiflow-pg18:5432/aiflow
|
|
- POSTGRES_HOST=qihu-aiflow-pg18
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_USER=aiflow
|
|
- POSTGRES_PASSWORD=pwd2026
|
|
- POSTGRES_DB=aiflow_vectors
|
|
- PG_HOST=qihu-aiflow-pg18
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=pwd2026
|
|
- SECRET_KEY=aiflow-secret-key-change-in-production-2026
|
|
- APP_ACCESS_URL=http://210.16.161.218:12888
|
|
- DEBUG=false
|
|
- SILICONFLOW_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- SILICONFLOW_BASE_URL=https://api.siliconflow.cn
|
|
- DEFAULT_MODEL=deepseek-ai/DeepSeek-V4-Flash
|
|
- SILICONFLOW_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- SILICONFLOW_BASE_URL=https://api.siliconflow.cn
|
|
- DEFAULT_MODEL=deepseek-ai/DeepSeek-V4-Flash
|
|
- SILICONFLOW_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- SILICONFLOW_BASE_URL=https://api.siliconflow.cn
|
|
- DEFAULT_MODEL=deepseek-ai/DeepSeek-V4-Flash
|
|
- SILICONFLOW_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- SILICONFLOW_BASE_URL=https://api.siliconflow.cn
|
|
- DEFAULT_MODEL=deepseek-ai/DeepSeek-V4-Flash
|
|
- HTTP_PROXY=http://172.18.0.1:7890
|
|
- HTTPS_PROXY=http://172.18.0.1:7890
|
|
- NO_PROXY=localhost,127.0.0.1,::1,210.16.161.2,qihu-aiflow-litellm,qihu-aiflow-meilisearch,qihu-aiflow-pg18,qihu-aiflow-redis,qihu-aiflow-casdoor18,172.17.0.0/16,172.18.0.0/16,172.19.0.0/16,172.20.0.0/16,10.0.0.0/8,192.168.0.0/16,.svc,.local,casdoor,qihu-aiflow-mysql,qihu-aiflow-redis,qihu-aiflow-pgvector,qihu-aiflow-pg18,qihu-aiflow-casdoor,qihuyun.com,ai.qihuyun.com,docs.qihuyun.com,bot.qihuyun.com,siliconflow.cn,api.siliconflow.cn,deepseek.com,api.deepseek.com,volcengineapi.com,aliyun.com,aliyuncs.com,dysmsapi.aliyuncs.com,tencentcloudapi.com,baidubce.com,dashscope.com,qwen.ai,zhipuai.cn,moonshot.cn,minimax.chat,baichuan.com,chatglm.cn,xiaomimimo.com,token-plan-cn.xiaomimimo.com,mi.com,pypi.tuna.tsinghua.edu.cn,feishu.cn,open.feishu.cn,dingtalk.com,open.dingtalk.com,weixin.qq.com,developers.weixin.qq.com,qyapi.weixin.qq.com,ilinkai.weixin.qq.com,tencent.com
|
|
depends_on:
|
|
redis:
|
|
condition: service_started
|
|
restart: unless-stopped
|
|
networks:
|
|
- aiflow-network
|
|
volumes:
|
|
- ./data:/app/data
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "50m"
|
|
max-file: "10"
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: qihu-aiflow-redis
|
|
command: redis-server --requirepass pwd2026 --appendonly yes
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
restart: unless-stopped
|
|
networks:
|
|
- aiflow-network
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "20m"
|
|
max-file: "5"
|
|
|
|
# Phase 0B: LiteLLM Proxy - Unified AI Gateway
|
|
litellm:
|
|
image: ghcr.io/berriai/litellm:main-stable
|
|
container_name: qihu-aiflow-litellm
|
|
command: ["--config", "/app/config.yaml", "--port", "4000"]
|
|
ports:
|
|
- "14000:4000"
|
|
volumes:
|
|
- ./config/litellm_config.yaml:/app/config.yaml
|
|
environment:
|
|
- HTTP_PROXY=http://qyyfw:XHR521yhf@103.242.14.208:11495
|
|
- HTTPS_PROXY=http://qyyfw:XHR521yhf@103.242.14.208:11495
|
|
- NO_PROXY=localhost,127.0.0.1,qihu-aiflow-pg18
|
|
- LITELLM_MASTER_KEY=sk-litellm-master-key-aiflow-2026
|
|
- SILICONFLOW_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- AGNES_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- LITELLM_CONFIG=/app/config.yaml
|
|
- MIMO_API_KEY=sk-idsplzeccvmbtyqxcrbhaiwmkzwajmicliunkjkouivepaaz
|
|
- DATABASE_URL=postgresql://aiflow:pwd2026@qihu-aiflow-pg18:5432/litellm
|
|
- LITELLM_MODE=PRODUCTION
|
|
restart: unless-stopped
|
|
networks:
|
|
- aiflow-network
|
|
meilisearch:
|
|
image: getmeili/meilisearch:v1.11
|
|
container_name: qihu-aiflow-meilisearch
|
|
ports:
|
|
- "17700:7700"
|
|
volumes:
|
|
- meilisearch_data:/meili_data
|
|
environment:
|
|
- MEILI_MASTER_KEY=meili-master-key-aiflow-2026
|
|
- MEILI_ENV=production
|
|
- MEILI_NO_ANALYTICS=true
|
|
restart: unless-stopped
|
|
networks:
|
|
- aiflow-network
|
|
|
|
|
|
# MuMuAINovel - AI Novel Creation (Phase2 App Service #1)
|
|
mumuainovel:
|
|
image: mumujie/mumuainovel:latest
|
|
container_name: qihu-aiflow-mumuainovel
|
|
restart: unless-stopped
|
|
networks:
|
|
- aiflow-network
|
|
environment:
|
|
- OPENAI_BASE_URL=http://qihu-aiflow-litellm:4000/v1
|
|
- OPENAI_API_KEY=sk-litellm-master-key-aiflow-2026
|
|
- DEFAULT_AI_PROVIDER=openai
|
|
- DEFAULT_MODEL=deepseek-v4-flash
|
|
- POSTGRES_HOST=qihu-aiflow-pg18
|
|
- POSTGRES_DB=mumuainovel
|
|
- POSTGRES_USER=aiflow
|
|
- POSTGRES_PASSWORD=pwd2026
|
|
- LOCAL_AUTH_ENABLED=true
|
|
- LOCAL_AUTH_USERNAME=mumu_admin
|
|
- LOCAL_AUTH_PASSWORD=mumu_admin_2026
|
|
- LINUXDO_AUTH_ENABLED=false
|
|
|
|
# MuMuAINovel OIDC Sidecar (GPL compliance boundary)
|
|
mumuainovel-oidc:
|
|
image: nginx:alpine
|
|
container_name: qihu-aiflow-mumuainovel-oidc
|
|
restart: unless-stopped
|
|
networks:
|
|
- aiflow-network
|
|
volumes:
|
|
- ./config/nginx/mumuainovel-oidc.conf:/etc/nginx/conf.d/default.conf
|
|
depends_on:
|
|
- mumuainovel
|
|
volumes:
|
|
redis_data:
|
|
meilisearch_data:
|
|
|
|
networks:
|
|
aiflow-network:
|
|
driver: bridge
|