OpenClaw容器持续重启主因是数据库连接失败、配置错误或依赖服务未就绪;需先查退出码(137=OOMKilled,1=启动失败),再用docker logs --previous看崩溃日志,实测MySQL/Redis连通性,确认DB_HOST填容器服务名而非127.0.0.1,并检查配置挂载与权限。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw部署后容器持续重启,说明服务无法稳定进入运行态,常见于数据库连接失败、配置错误或依赖服务未就绪。直接查看日志能快速定位根本原因,而不是反复重启容器。
确认容器退出码和最后一次崩溃日志
执行 docker ps -a 找出状态为 Restarting 或 Exited 的容器ID。
运行 docker inspect <container_id> --format='{{.State.ExitCode}}' 获取退出码:【137 表示被 OOMKilled,1 表示应用启动失败,0 表示正常退出】。
若退出码非 0,立即执行 docker logs --tail 50 <container_id> 查看末尾日志;若容器刚崩溃过,加 --previous 参数获取上一轮日志:这一步必须做,否则看不到真实报错。
检查数据库连接与服务依赖状态
OpenClaw 启动时会尝试连接 MySQL/MariaDB 和 Redis,任一不可达都会导致主进程退出并触发重启。
先确认数据库容器是否真正就绪:执行 docker exec -it <mysql_container_id> mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "SELECT 1",能返回 1 才算可用。
Redis 同理:docker exec -it <redis_container_id> redis-cli ping,必须返回 PONG;【注意:仅容器 Running 不代表服务已监听端口,务必用客户端命令实测连通性】。
若任一依赖失败,不要重启 OpenClaw 容器,先解决数据库或 Redis 的配置、网络或认证问题。
验证配置文件挂载与权限
方法一:检查宿主机配置目录是否被正确挂载
进入 OpenClaw 容器内部:docker exec -it <opencrawl_container_id> sh,然后运行 ls -l /app/config/ 确认配置文件存在且非空;若目录为空或只有默认占位文件,说明宿主机上的 /path/to/opencrawl/config 没有正确映射到容器内。
方法二:确认配置文件中数据库地址是否指向容器网络别名
OpenClaw 配置里的 DB_HOST 必须填服务名(如 mysql 或 db),不能填 127.0.0.1 或宿主机 IP;【填错会导致连接拒绝,且日志里只显示“Connection refused”,不提示是地址写错了】。
方法三:检查文件权限
在宿主机上运行 ls -l /path/to/opencrawl/config/*.yaml,确保文件属主可读(至少 644);若用 root 创建但容器以非 root 用户运行,权限不足会导致加载配置失败。
临时禁用健康检查快速验证
第一步:找到 docker-compose.yml 或 Kubernetes YAML 中 OpenClaw 服务定义段
第二步:注释或删除 healthcheck: 块(包括 test、interval、timeout 等全部行)
第三步:重新部署:docker-compose up -d opencrawl 或 kubectl apply -f deploy.yaml
这一步能绕过探针误判导致的循环重启,让容器有机会输出完整启动日志;如果禁用后容器不再重启,说明原健康检查路径、超时或阈值设置不合理。


















