ClouisleClouisle

Docker Compose 部署

在单台服务器上启动 Clouisle 全部服务

Docker Compose 适合单机部署。需要 Docker 和 Docker Compose v2。

引导式安装

curl -fsSL https://raw.githubusercontent.com/clouisle/Clouisle/main/deploy/install.sh | bash

选择 Docker Compose,确认安装目录和域名,安装器会下载文件、生成强密钥、校验 Compose、拉取镜像并启动服务。

非交互安装(跳过提示,使用默认值):

CLOUISLE_DEPLOYMENT=docker CLOUISLE_YES=1 curl -fsSL https://raw.githubusercontent.com/clouisle/Clouisle/main/deploy/install.sh | bash

默认安装目录为 /opt/clouisle。

手动安装

cd deploy
cp .env.example .env
internal_api_token="$(openssl rand -hex 32)"
sed -i.bak "s/^INTERNAL_API_TOKEN=.*/INTERNAL_API_TOKEN=${internal_api_token}/" .env
rm .env.bak
unset internal_api_token
docker compose pull
docker compose up -d

macOS 的 BSD sed 与 GNU sed 参数不同;在 macOS 上可直接编辑 .env 或使用安装器生成 Token。

检查服务

docker compose ps
docker compose logs -f api
curl http://localhost:8000/api/v1/health

将外部反向代理配置为 /api/* 到 api:8000、/ 到 frontend:3000。浏览器入口默认 http://localhost:3000。

服务清单与端口

deploy/docker-compose.yml 定义 5 个应用服务 + 3 个基础设施服务,共 8 个容器:

服务镜像启动命令宿主端口
dbclouisle-postgres-pg-search:0.24.3-pg17-alpine1postgres -c shared_preload_libraries=pg_search,pg_stat_statements -c pg_stat_statements.track=all5432
redisredis:7-alpineredis-server --requirepass …(设置 REDIS_PASSWORD 时)6379
qdrantqdrant/qdrant:v1.18.3默认6333
apiclouisle-backend:latestpython main.py server -H 0.0.0.0 -w 4 --no-reload8000
workerclouisle-backend:latestpython main.py worker -c 4 -Q default,agent,knowledge,workflow无
sandbox-workerclouisle-sandbox-worker:latestpython main.py sandbox-worker -c ${SANDBOX_WORKER_CONCURRENCY:-1}无
beatclouisle-backend:latestpython main.py beat无
frontendclouisle-frontend:latestnode server.js(镜像默认)3000

Compose 不含 Nginx 服务。api 的健康检查是容器内 GET http://localhost:8000/api/v1/health;worker 与 sandbox-worker 依赖 api 健康后才启动,beat 与 frontend 只依赖 api 已启动(service_started)。db、redis、qdrant 通过各自健康检查(pg_isready、redis-cli ping、/healthz),应用服务都等它们健康后才启动。

api 独占 uploads_data 卷(挂载 /app/uploads);worker 与 sandbox-worker 不挂该卷,改用 UPLOAD_STORAGE_MODE=remote + API_INTERNAL_BASE_URL=http://api:8000 经内部网关读写文件。sandbox-worker 额外以 user: "0"、cap_add: [SYS_ADMIN]、seccomp=unconfined 运行,bwrap 才能创建用户/挂载命名空间。

生产环境必须为 POSTGRES_PASSWORD 与 INTERNAL_API_TOKEN 提供强随机值:Compose 使用 ${VAR:?required} 语法,未设置时 docker compose up 直接失败。INTERNAL_API_TOKEN 必须被 api、worker、sandbox-worker 共享。

初始化

Tortoise ORM 在 API 启动时自动建表与迁移(无 Alembic)。首个注册用户自动成为超级管理员。

Docker Compose 服务运行状态
Docker Compose 服务运行状态

常用操作

docker compose logs -f worker
docker compose restart api
docker compose up -d --scale worker=4
docker compose up -d --scale sandbox-worker=2
docker compose down

beat 必须保持一个副本。docker compose down -v 会删除数据卷,执行前必须完成备份。

worker 默认消费 default,agent,knowledge,workflow 4 个队列,--scale worker=4 会同时扩展这 4 类任务。只扩容某一类任务时,增加一个只订阅单队列的 Worker 服务(如 -Q agent),sandbox 队列由 sandbox-worker 独立消费。队列与任务的对应关系见部署架构 → Celery 队列划分。

这篇文章对你有帮助吗?

本页目录