Docker 交付形态
仓库里有两套 compose,别拿错:
deployments/docker/docker-compose.yml:开发期依赖,只有 PostgreSQL。deployments/startup/docker-compose.yml:交付形态,postgres + migrate + api + worker 四个服务。
当前没有预构建镜像
Section titled “当前没有预构建镜像”Release 目前没有附带镜像或启动包。你要自己构建三个镜像:
docker build --target api -t congorag-api:5.0.2 .docker build --target worker -t congorag-worker:5.0.2 .docker build --target migrate -t congorag-migrate:5.0.2 .构建要拉 Node、Go、Alpine 的基础镜像,第一次会慢。构建完成后,镜像里已经包含前端产物和迁移文件。
cd deployments/startupcp .env.example .env至少改这几项:
CONGORAG_VERSION=5.0.2CONGORAG_PG_PASSWORD:改成你自己的密码CONGORAG_PORT:宿主机端口,默认 3210CONGORAG_DB_URL:保持默认即可,容器之间用服务名postgres
.env 里不要出现公网地址。compose 默认把 api 端口绑在 127.0.0.1。
docker compose -f deployments/startup/docker-compose.yml up -dcongorag-migrate 是一次性容器,跑完以 0 退出,这是正常的。congorag-api 要等到 healthy;congorag-worker 不提供 HTTP,只要在消费就是正常的。
- 数据库卷:
congorag_congorag-data是文档、主密钥和 tiktoken 缓存的卷;PostgreSQL 用另一个命名卷。 - 备份时数据库和数据卷要一起备。
docker compose down保留卷;docker compose down -v会删掉数据。
仓库里有 scripts/startup-package.mjs,用来把三个镜像 save 成离线 tar 包,并和 compose、.env.example、升级脚本放在一起。具体参数看脚本头部注释。
这个脚本不会替你发布到 GitHub Release。发布产物需要你自己挂上去,或者用仓库的 release workflow。
- 如果本机已经有一个叫
congorag-postgres的容器(比如开发期的),先停掉,否则容器名冲突。 - api 容器内监听
0.0.0.0:3210,但宿主机端口默认只绑127.0.0.1。不要为了“让外面能访问”把 ports 改成3210:3210;先读反向代理那篇。 - 升级不要直接
docker compose up -d换 tag。先看升级与回滚。