feat: add Docker Compose configuration and update README for improved setup instructions
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
.superpowers
|
.superpowers
|
||||||
|
|
||||||
Dockerfile
|
Dockerfile
|
||||||
|
docker-data
|
||||||
dist
|
dist
|
||||||
data
|
data
|
||||||
qdrant
|
qdrant
|
||||||
|
|||||||
@@ -280,16 +280,26 @@ make migration # 执行 migration
|
|||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
|
|
||||||
|
推荐使用 Docker Compose 同时启动应用、MySQL 和 Qdrant:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t cs-agent .
|
docker compose up -d --build
|
||||||
docker run --rm -p 8083:8083 -v cs-agent-data:/app/data cs-agent
|
|
||||||
```
|
```
|
||||||
|
|
||||||
容器默认使用 `/app/config/config.yaml`,镜像内会基于 `config/config.example.yaml` 放置一份默认配置。生产环境建议通过挂载配置文件覆盖:
|
Compose 默认会启动:
|
||||||
|
|
||||||
|
- `cs-agent`:应用服务,端口 `8083`
|
||||||
|
- `mysql`:MySQL 8.4,数据卷 `mysql-data`
|
||||||
|
- `qdrant`:向量数据库,数据卷 `qdrant-data`,端口 `6333`/`6334`
|
||||||
|
|
||||||
|
Compose 使用 [docker/cs-agent.yaml](docker/cs-agent.yaml) 作为容器内配置,应用会通过 Docker 内部服务名访问 `mysql` 和 `qdrant`。
|
||||||
|
|
||||||
|
也可以只构建应用镜像,但需要自行准备 MySQL 和 Qdrant,并挂载对应配置:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
docker build -t cs-agent .
|
||||||
docker run --rm -p 8083:8083 \
|
docker run --rm -p 8083:8083 \
|
||||||
-v $(pwd)/config/config.yaml:/app/config/config.yaml:ro \
|
-v $(pwd)/docker/cs-agent.yaml:/app/config/config.yaml:ro \
|
||||||
-v cs-agent-data:/app/data \
|
-v cs-agent-data:/app/data \
|
||||||
cs-agent
|
cs-agent
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.4
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: cs_ai_agent
|
||||||
|
MYSQL_USER: cs_agent
|
||||||
|
MYSQL_PASSWORD: cs_agent_password
|
||||||
|
MYSQL_ROOT_PASSWORD: cs_agent_root_password
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
command:
|
||||||
|
- --character-set-server=utf8mb4
|
||||||
|
- --collation-server=utf8mb4_unicode_ci
|
||||||
|
volumes:
|
||||||
|
- mysql-data:/var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u\"$${MYSQL_USER}\" -p\"$${MYSQL_PASSWORD}\" --silent"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
qdrant:
|
||||||
|
image: qdrant/qdrant:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- qdrant-data:/qdrant/storage
|
||||||
|
ports:
|
||||||
|
- "6333:6333"
|
||||||
|
- "6334:6334"
|
||||||
|
|
||||||
|
cs-agent:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: cs-agent:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
qdrant:
|
||||||
|
condition: service_started
|
||||||
|
ports:
|
||||||
|
- "8083:8083"
|
||||||
|
volumes:
|
||||||
|
- cs-agent-data:/app/data
|
||||||
|
- ./docker/cs-agent.yaml:/app/config/config.yaml:ro
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql-data:
|
||||||
|
qdrant-data:
|
||||||
|
cs-agent-data:
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
server:
|
||||||
|
port: 8083
|
||||||
|
|
||||||
|
db:
|
||||||
|
type: mysql
|
||||||
|
dsn: cs_agent:cs_agent_password@tcp(mysql:3306)/cs_ai_agent?charset=utf8mb4&parseTime=True&multiStatements=true&loc=Local
|
||||||
|
maxIdleConns: 5
|
||||||
|
maxOpenConns: 20
|
||||||
|
connMaxIdleTimeSeconds: 300
|
||||||
|
connMaxLifetimeSeconds: 1800
|
||||||
|
|
||||||
|
logger:
|
||||||
|
level: info
|
||||||
|
format: text
|
||||||
|
addSource: false
|
||||||
|
|
||||||
|
auth:
|
||||||
|
tokenTTLHours: 12
|
||||||
|
maxFailedAttempts: 5
|
||||||
|
credentialLockMinute: 15
|
||||||
|
|
||||||
|
customerSession:
|
||||||
|
secret: replace-with-a-random-secret
|
||||||
|
ttlMinutes: 120
|
||||||
|
refreshThresholdMinutes: 30
|
||||||
|
|
||||||
|
storage:
|
||||||
|
default: local
|
||||||
|
maxUploadSizeMB: 20
|
||||||
|
local:
|
||||||
|
root: /app/data/storage
|
||||||
|
baseUrl: /storage
|
||||||
|
oss:
|
||||||
|
endpoint: ""
|
||||||
|
bucket: ""
|
||||||
|
accessKeyId: ""
|
||||||
|
accessKeySecret: ""
|
||||||
|
baseUrl: ""
|
||||||
|
private: false
|
||||||
|
signedUrlExpireSeconds: 600
|
||||||
|
|
||||||
|
vectorDB:
|
||||||
|
type: qdrant
|
||||||
|
host: qdrant
|
||||||
|
grpcPort: 6334
|
||||||
|
apiKey: ""
|
||||||
|
useTls: false
|
||||||
|
|
||||||
|
mcp:
|
||||||
|
enabled: true
|
||||||
|
servers:
|
||||||
|
system:
|
||||||
|
enabled: true
|
||||||
|
endpoint: "http://127.0.0.1:8083/api/mcp"
|
||||||
|
timeoutMs: 15000
|
||||||
|
headers: {}
|
||||||
|
|
||||||
|
wxWork:
|
||||||
|
enabled: false
|
||||||
|
corpId: ""
|
||||||
|
corpSecret: ""
|
||||||
|
agentId: ""
|
||||||
|
oauthRedirect: ""
|
||||||
|
stateSecret: ""
|
||||||
|
rsaPrivateKey: ""
|
||||||
|
token: ""
|
||||||
|
encodingAESKey: ""
|
||||||
|
notify:
|
||||||
|
enabled: false
|
||||||
|
toUsers: []
|
||||||
|
safe: false
|
||||||
|
enableDuplicateCheck: true
|
||||||
|
duplicateCheckInterval: 1800
|
||||||
Reference in New Issue
Block a user