-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
145 lines (140 loc) · 5.63 KB
/
docker-compose.yml
File metadata and controls
145 lines (140 loc) · 5.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# ──────────────────────────────────────────────
# AgentHub Hub Server — Docker Compose 开发环境
# ──────────────────────────────────────────────
# 启动完整 Hub 技术栈:PostgreSQL 16 + Redis 7 + Hub Server。
#
# 快速开始:
# cp .env.example .env # 首次:复制环境变量(已提供默认值)
# ./scripts/dev-up.sh # 一键启动全部服务
# ./scripts/dev-down.sh # 停止并清理
#
# 仅启动基础设施(自己用 go run 启动 Hub Server):
# docker compose up -d postgres redis
# cd hub-server && go run ./cmd/server-hub
#
# 服务端口:
# Hub Server API: http://localhost:8080
# Hub Admin/metrics: http://localhost:6060
# PostgreSQL: localhost:5432
# Redis: localhost:6379
#
# 默认仅绑定 127.0.0.1,避免开发密码和管理端口暴露到局域网。
# 如确需远程调试,显式设置 AGENTHUB_BIND_HOST=0.0.0.0 并自行加防火墙。
# ──────────────────────────────────────────────
services:
# ── PostgreSQL 16 ──────────────────────────
postgres:
image: postgres:16-alpine
container_name: agenthub-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${AGENTHUB_DB_NAME:-agenthub}
POSTGRES_USER: ${AGENTHUB_DB_USER:-agenthub}
POSTGRES_PASSWORD: ${AGENTHUB_DB_PASSWORD:-dev_password}
ports:
- "${AGENTHUB_BIND_HOST:-127.0.0.1}:${AGENTHUB_DB_PORT:-5432}:5432"
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${AGENTHUB_DB_USER:-agenthub} -d ${AGENTHUB_DB_NAME:-agenthub}"]
interval: 5s
timeout: 5s
retries: 10
start_period: 10s
networks:
- agenthub-net
# ── Redis 7 ────────────────────────────────
redis:
image: redis:7-alpine
container_name: agenthub-redis
restart: unless-stopped
command: >
redis-server
--appendonly yes
--appendfsync everysec
--maxmemory 256mb
--maxmemory-policy allkeys-lru
--save 900 1
--save 300 10
ports:
- "${AGENTHUB_BIND_HOST:-127.0.0.1}:${AGENTHUB_REDIS_PORT:-6379}:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 10
start_period: 5s
networks:
- agenthub-net
# ── Hub Server ─────────────────────────────
hub-server:
build:
context: ./hub-server
dockerfile: ./deployments/Dockerfile
container_name: agenthub-hub
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
environment:
# 数据库
AGENTHUB_DB_HOST: postgres
AGENTHUB_DB_PORT: "5432"
AGENTHUB_DB_USER: ${AGENTHUB_DB_USER:-agenthub}
AGENTHUB_DB_PASSWORD: ${AGENTHUB_DB_PASSWORD:-dev_password}
AGENTHUB_DB_NAME: ${AGENTHUB_DB_NAME:-agenthub}
# Redis
AGENTHUB_REDIS_HOST: redis
AGENTHUB_REDIS_PORT: "6379"
AGENTHUB_REDIS_PASSWORD: ""
AGENTHUB_REDIS_DB: "0"
AGENTHUB_REDIS_POOL_SIZE: "100"
AGENTHUB_REDIS_MIN_IDLE_CONNS: "10"
# JWT
AGENTHUB_JWT_SECRET: ${AGENTHUB_JWT_SECRET:-dev-secret-change-in-production-min-length-32}
AGENTHUB_JWT_ACCESS_TTL: ${AGENTHUB_JWT_ACCESS_TTL:-15m}
AGENTHUB_JWT_REFRESH_TTL: ${AGENTHUB_JWT_REFRESH_TTL:-720h}
# 服务
AGENTHUB_SERVER_PORT: ${AGENTHUB_SERVER_PORT:-8080}
AGENTHUB_SERVER_LOG_LEVEL: ${AGENTHUB_SERVER_LOG_LEVEL:-info}
AGENTHUB_SERVER_ADMIN_PORT: ${AGENTHUB_SERVER_ADMIN_PORT:-6060}
AGENTHUB_UPLOAD_DIR: ${AGENTHUB_UPLOAD_DIR:-./uploads}
AGENTHUB_UPLOAD_MAX_SIZE: ${AGENTHUB_UPLOAD_MAX_SIZE:-10485760}
# TokenDance ID OIDC. Values stay empty in local dev unless the operator
# has registered an AgentHub OAuth client in TokenDance ID.
# Run hub-server/scripts/setup-tokendance-oidc.sh to register the client,
# then set the CLIENT_ID and CLIENT_SECRET below.
AGENTHUB_TOKENDANCE_ID_ISSUER_URL: ${AGENTHUB_TOKENDANCE_ID_ISSUER_URL:-http://localhost:3000}
AGENTHUB_TOKENDANCE_ID_JWKS_URI: ${AGENTHUB_TOKENDANCE_ID_JWKS_URI:-}
AGENTHUB_TOKENDANCE_ID_CLIENT_ID: ${AGENTHUB_TOKENDANCE_ID_CLIENT_ID:-}
AGENTHUB_TOKENDANCE_ID_CLIENT_SECRET: ${AGENTHUB_TOKENDANCE_ID_CLIENT_SECRET:-}
AGENTHUB_TOKENDANCE_ID_REDIRECT_URI: ${AGENTHUB_TOKENDANCE_ID_REDIRECT_URI:-http://127.0.0.1/callback}
AGENTHUB_TOKENDANCE_ID_ALLOWED_REDIRECT_URIS: ${AGENTHUB_TOKENDANCE_ID_ALLOWED_REDIRECT_URIS:-http://127.0.0.1/callback,http://localhost:5173/auth/tokendance/callback}
ports:
- "${AGENTHUB_BIND_HOST:-127.0.0.1}:${AGENTHUB_SERVER_PORT:-8080}:8080"
- "${AGENTHUB_BIND_HOST:-127.0.0.1}:${AGENTHUB_SERVER_ADMIN_PORT:-6060}:6060"
volumes:
- uploads_data:/app/uploads
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/health || exit 1"]
interval: 15s
timeout: 5s
retries: 5
start_period: 15s
networks:
- agenthub-net
volumes:
pg_data:
name: agenthub_pg_data
redis_data:
name: agenthub_redis_data
uploads_data:
name: agenthub_uploads
networks:
agenthub-net:
name: agenthub-net
driver: bridge