使用 Docker 部署
Anyy 仓库内提供 Dockerfile 与 Compose 配置。容器会常驻运行 Gateway 和 Dashboard,Profile 数据则保存在命名卷中;重建容器不会清空这套数据。
希望 Anyy 直接集成到 macOS 或 Linux 用户环境时,优先使用原生安装。宿主机本来就用容器管理服务,或需要清楚的容器边界时,再选择 Docker。
准备条件
- Docker Engine 或 Docker Desktop,并已安装 Docker Compose v2;
- 包含
Dockerfile、compose.yaml的 Anyy 源码; - 至少一个可用于初始化的模型服务商凭据。
镜像支持 Linux amd64 和 arm64。默认 Compose 会从当前源码构建 anyy:local;本文不假设存在公开的 Anyy 镜像仓库。
构建并初始化
在仓库根目录执行:
docker compose build
docker compose run --rm anyy setup
Setup 会把配置和凭据写入持久化的 anyy-data 卷。命令实际以容器中的非 root 用户 anyy 运行。
docker compose run --rm anyy setup 会继续使用同一个数据卷。修改服务商、模型或可选能力时,不需要先删除容器数据。
启动服务
docker compose up -d
docker compose ps
docker compose logs anyy
容器会先启动默认 Profile 的 Gateway;健康检查通过后,Dashboard 才开始监听。浏览器打开:
http://127.0.0.1:8767
实际使用日志中打印的带 Token URL,并把其中的 Token 当作凭据保护。
默认配置只把 Dashboard 发布到宿主机回环地址。Gateway RPC 仍通过数据卷内的 Profile Unix Socket 通信,不开放 Gateway TCP 端口。
在容器中运行命令
管理正在运行的实例:
docker compose exec anyy anyy status
docker compose exec anyy anyy doctor
docker compose exec anyy anyy skills list
这些命令会降权到 UID/GID 10000,从而保持数据卷中的文件由非特权 Anyy 用户管理。
端口与时区
启动时可以传入 Compose 变量:
ANYY_DASHBOARD_PORT=8877 TZ=Asia/Shanghai docker compose up -d
| 变量 | 默认值 | 作用 |
|---|---|---|
ANYY_DASHBOARD_PORT | 8767 | 映射到 Dashboard 的宿主机回环端口 |
TZ | UTC | Cron 与界面时间使用的容器时区 |
ANYY_IMAGE | anyy:local | 不使用默认本地标签时,指定经过确认的精确镜像名 |
修改 ANYY_DASHBOARD_PORT 只改变宿主机端口,容器内部仍使用 8767。
不要随意把 127.0.0.1 改成公网监听。需要远程访问时,优先使用可信隧道或带 TLS 的反向代理,并继续保护 Dashboard Token。
数据与备份
命名卷 anyy-data 挂载在 /data,其中包含 Profile 配置、凭据、会话、记忆、Skills、Workspace 文件、日志和备份。
从运行中的容器创建 Profile 备份:
docker compose exec anyy anyy backup create
docker compose exec anyy anyy backup list
凭据默认不进入归档,只有明确使用 --include-secrets 才会包含。只把备份留在同一个 Docker 卷中,无法应对该卷损坏或误删;需要灾难恢复时,应把验证过的归档复制到独立存储。
同一 Profile 的 Gateway 是持久状态的唯一在线写入者。不要让两个正在运行的 Anyy 部署同时挂载同一个 Profile Root 或 anyy-data 卷。
更新
从源码构建时,先更新可信源码,再重建并替换容器:
docker compose build --pull
docker compose up -d
docker compose ps
如果你明确把 ANYY_IMAGE 指向可信 Registry 中的镜像,则使用对应发布流程:
docker compose pull
docker compose up -d
anyy update 不负责替换容器管理的安装。只要仍使用原命名卷,容器更新不会删除 Profile 数据。
停止与移除
暂停服务,但保留容器和数据卷:
docker compose stop
删除容器与项目网络,同时保留数据:
docker compose down
只有在备份已经验证、并且确定要删除全部数据时才执行:
docker compose down --volumes
--volumes 会删除 Profile 数据docker compose down --volumes 会移除命名卷,其中的配置、凭据、会话、记忆、Skills 与 Workspace 文件都会一起消失。这相当于容器部署的完整数据删除。
信任域与运行边界
一个 Compose Project 表示一套可信 Anyy 部署,而不是固定等于一个 Profile。只有属于同一可信操作者,而且不需要独立资源、网络、合规或故障半径时,多个 Profile 才适合放在同一项目中。
需要更强隔离时,创建另一个 Compose Project,并使用不同数据卷和宿主机端口。不要添加 Compose init: true:镜像内的 s6 必须保持 PID 1。默认部署也不会挂载 Docker Socket,更不会管理其他容器。
常见问题
| 现象 | 处理方法 |
|---|---|
| Setup 无法保存文件 | 确认数据卷可由 UID/GID 10000 写入;若改成 Bind Mount,先处理目录所有权 |
| 容器一直 unhealthy | 查看 docker compose logs anyy;默认 Profile Gateway 未就绪时健康检查会失败 |
| Dashboard 无法打开 | 检查 docker compose ps、ANYY_DASHBOARD_PORT 与日志中的回环 URL |
| 命令找不到 Profile | 使用 docker compose exec anyy anyy ...,让命令沿用 /data 与容器环境 |
| 重建后像全新实例 | 检查是否仍是同一个 Compose Project 和命名卷;不同项目名会创建不同卷 |
| 更新后版本没变化 | 源码部署应重新 Build;Registry 部署应先 Pull,再重新创建 Service |
Setup 中的选项与第一次对话可以继续参考快速入门,涉及宿主机生命周期的命令则以本页 Compose 流程为准。迁移实例前先看备份与恢复。