Files
AILab/server/docker/infra-compose-dev.yaml
T
2025-11-10 18:09:34 +08:00

204 lines
5.5 KiB
YAML

x-kong-config:
&kong-env
KONG_DATABASE: postgres
KONG_PG_HOST: postgres
KONG_PG_DATABASE: kong
KONG_PG_USER: postgres
KONG_PG_PASSWORD: 123456
services:
pybackend:
# 因为每次build都会用缓存 调试起来极不方便,所以索性在外部先构建 在这里直接运行镜像
# build: # 在本文件所在目录运行构建 docker compose build --no-cache
# context: ../../bbit_ai/
# dockerfile: ./Dockerfile_ai_lab # 开发版 Dockerfile
container_name: ce_pybackend
image: ce_pybackend:latest
ports:
- "13011:13011"
volumes: # 在本文件所在目录运行
- ../../bbit_ai/app:/app # 挂载本地代码,实现热更新
- ../../bbit_ai/docker/:/root/.local/pyzxing # 挂载 jar
- ./config/bot:/app/data # 配置文件目录
networks:
- ce_network
depends_on:
- milvus
bot_server:
# build: # 在本文件所在目录运行构建 docker compose build --no-cache
# context: ../../bbit_ai/
# dockerfile: ./Dockerfile_bot_server
container_name: ce_bot_server
image: ce_bot_server:latest
ports:
# ws服务端
- "8000:8000"
# http服务的端口,用于简单OTA接口(单服务部署),以及视觉分析接口
- "8003:8003"
volumes: # 在本文件所在目录运行
- ../../bbit_ai/app_bot:/app # 挂载本地代码,实现热更新
# 配置文件目录
- ./config/bot:/app/data
# 模型文件挂接,很重要
- ./config/models/SenseVoiceSmall/model.pt:/app/models/SenseVoiceSmall/model.pt
networks:
- ce_network
bot_mcp:
# build: # 在本文件所在目录运行构建 docker compose build --no-cache
# context: ../../bbit_ai/
# dockerfile: ./Dockerfile_bot_mcp
image: ce_bot_mcp:latest
container_name: ce_bot_mcp
ports:
- "8004:8004"
volumes: # 在本文件所在目录运行
- ../../bbit_ai/app_mcp:/app
# 配置文件目录
- ./config/bot:/app/data
networks:
- ce_network
# ---------- PostgreSQL ----------
postgres:
container_name: ce_postgres
image: postgres:15-alpine
environment:
POSTGRES_DB: ktor # 实际上这里已经没用了,因为卷已经创建了,现在在用ktor2、kong两个数据库
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- ce_network
restart: unless-stopped
# ---------- Redis ----------
redis:
container_name: ce_redis
image: redis:7.2.3-alpine
command: [
"redis-server",
"--save", "60", "100",
"--appendonly", "yes",
]
volumes:
- redis_data:/data
ports:
- "6379:6379"
networks:
- ce_network
restart: unless-stopped
# ---------- ETCD ----------
etcd:
container_name: ce_etcd
image: quay.io/coreos/etcd:v3.5.18
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
networks:
- ce_network
volumes:
- etcd_data:/data/etcd
command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /data/etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3
restart: unless-stopped
# ---------- Milvus ----------
milvus:
container_name: ce_milvus
image: milvusdb/milvus:v2.6.1
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MQ_TYPE: woodpecker
MINIO_ADDRESS: ai.ronsunny.cn:9000
MINIO_BUCKET_NAME: a-bucket-dev
MINIO_USE_SSL: true
MINIO_ACCESS_KEY_ID: minioadmin
MINIO_SECRET_ACCESS_KEY: minioadmin
MINIO_REGION: Chengdu
networks:
- ce_network
volumes:
- milvus_data:/var/lib/milvus
# - ./config/milvus/milvus.yaml:/milvus/configs/milvus.yaml
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
ports:
- "19530:19530" # 服务用
- "9091:9091" # GUI用
depends_on:
- etcd
restart: unless-stopped
# ---------- Attu ----------
attu:
container_name: ce_attu
image: zilliz/attu:v2.6
environment:
MILVUS_URL: ce_milvus:19530
networks:
- ce_network
ports:
- "3000:3000" # 浏览器访问端口
depends_on:
- milvus
restart: unless-stopped
# ---------- RabbitMQ ----------
rabbitmq:
image: rabbitmq:4.2-rc-management-alpine
container_name: ce_rabbitmq
hostname: ce_rabbitmq
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: 123456
ports:
- "5672:5672"
- "15672:15672"
- "15692:15692"
command: >
sh -c "rabbitmq-plugins enable --offline rabbitmq_prometheus && rabbitmq-server"
volumes:
- rabbitmq_data:/var/lib/rabbitmq
networks:
- ce_network
restart: unless-stopped
# ---------- 数据卷 ----------
volumes:
postgres_data:
name: ce_postgres_data
redis_data:
name: ce_redis_data
etcd_data:
name: ce_etcd_data
milvus_data:
name: ce_milvus_data
rabbitmq_data:
name: ce_rabbitmq_data
# ---------- 网络 ----------
networks:
ce_network:
external: true