72 lines
2.0 KiB
YAML
72 lines
2.0 KiB
YAML
version: "3.8"
|
||
|
||
# =============================================================================
|
||
# 生产部署配置
|
||
# =============================================================================
|
||
# 启动:docker compose up -d
|
||
# agentkit 容器内通过 service name (redis/postgres) 连接,不暴露中间件端口
|
||
# =============================================================================
|
||
|
||
services:
|
||
agentkit:
|
||
build: .
|
||
command: serve --host 0.0.0.0 --port 8001
|
||
ports:
|
||
- "8001:8001"
|
||
env_file: .env
|
||
environment:
|
||
# 容器间通信:使用 service name,不依赖宿主机端口
|
||
- REDIS_URL=redis://redis:6379/0
|
||
- DATABASE_URL=postgresql+asyncpg://agentkit:agentkit@postgres:5432/agentkit
|
||
- AGENTKIT_BUS_BACKEND=redis
|
||
- AGENTKIT_SESSION_BACKEND=redis
|
||
- AGENTKIT_TASK_STORE_BACKEND=redis
|
||
depends_on:
|
||
redis:
|
||
condition: service_healthy
|
||
postgres:
|
||
condition: service_healthy
|
||
healthcheck:
|
||
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8001/api/v1/health')"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
start_period: 30s
|
||
retries: 3
|
||
restart: unless-stopped
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
# 生产模式不暴露端口到宿主机,仅容器间可达
|
||
expose:
|
||
- "6379"
|
||
volumes:
|
||
- redisdata:/data
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
restart: unless-stopped
|
||
|
||
postgres:
|
||
image: pgvector/pgvector:pg15
|
||
# 生产模式不暴露端口到宿主机,仅容器间可达
|
||
expose:
|
||
- "5432"
|
||
environment:
|
||
POSTGRES_USER: agentkit
|
||
POSTGRES_PASSWORD: agentkit
|
||
POSTGRES_DB: agentkit
|
||
volumes:
|
||
- pgdata:/var/lib/postgresql/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U agentkit"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
redisdata:
|
||
pgdata:
|