openclaw-stack 是一个面向 OpenClaw 的 Docker Compose 运行栈,基于 ghcr.io/openclaw/openclaw:latest 镜像扩展了常用工具、持久化目录、权限初始化以及网关启动流程。
Dockerfile:在官方 OpenClaw 镜像上安装常用工具和初始化脚本。docker-compose.yml:定义三个服务。docker/openclaw-permissions-init.sh:首次启动前准备目录权限和 Python venv。docker/openclaw-gateway-entrypoint.sh:初始化网关配置并启动 OpenClaw gateway。
openclaw-permissions:一次性初始化容器,创建目录并修正权限。openclaw-gateway:主服务,提供网关和桥接端口。openclaw-cli:共享网关网络的交互式 CLI 容器。
- Docker
- Docker Compose
- 可写的数据目录,用于持久化配置、工作区、认证信息、npm 全局包和 Python venv
- 准备环境变量文件
.env。 - 确保
OPENCLAW_DATA_DIR指向一个存在且可写的目录。 - 启动服务:
docker compose up -d- 查看网关状态:
docker compose ps
docker compose logs -f openclaw-gateway18789:OpenClaw gateway18790:bridge
如果需要改端口,可以在 .env 中设置:
OPENCLAW_GATEWAY_PUBLIC_PORT=18789
OPENCLAW_BRIDGE_PUBLIC_PORT=18790OPENCLAW_IMAGE:要使用的镜像,默认ghcr.io/flyinghail/openclaw-stack:latestOPENCLAW_ENV_FILE:Compose 读取的环境文件,默认.envOPENCLAW_DATA_DIR:持久化数据根目录OPENCLAW_TZ:容器时区,默认UTCOPENCLAW_GATEWAY_BIND:网关绑定地址,默认lanOPENCLAW_GATEWAY_TOKEN:必须提供,网关启动时会校验OPENCLAW_CONTROL_UI_ORIGINS:额外允许的 UI 来源,逗号分隔OPENCLAW_DISABLE_BONJOUR:默认1
Compose 会把以下内容挂载到 OPENCLAW_DATA_DIR 下:
configworkspaceauth-profile-secretsnpm-globalvenv-openclaw
这些目录不要放在临时路径里,否则重启后状态会丢失。
docker build -t openclaw-stack:latest .如果要推送到 GHCR,可以参考仓库里的 GitHub Actions workflow:.github/workflows/docker-publish.yml。
请在 .env 中设置 OPENCLAW_GATEWAY_TOKEN,否则网关入口脚本会直接退出。
首次启动会创建 Python venv、初始化配置并修正目录权限,属于正常现象。
删除 OPENCLAW_DATA_DIR/config/.docker-init-ok,下次启动会重新执行首次初始化逻辑。