You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Maybe个人财务工具遇数据库容器重启故障求助

解决Maybe财务工具Docker部署中db容器持续重启的问题

1. 先查看db容器的详细日志

exit code 0不一定是错误,但持续重启肯定存在异常。先拉取最近的日志定位原因:

sudo docker logs maybe-db-1 --tail 50

重点关注PostgreSQL初始化阶段的报错,比如目录权限不足、环境变量配置错误、数据库初始化失败这类信息。

2. 检查docker-compose中的db服务配置

聚焦以下关键配置项:

  • 环境变量:确认POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB的取值和Maybe项目要求一致,无拼写错误。
  • 健康检查:如果配置了healthcheck,检查命令是否正确。PostgreSQL的健康检查标准命令为pg_isready -U $POSTGRES_USER -d $POSTGRES_DB,同时确认超时、间隔时间设置合理,避免因检查过于严格导致容器被误标记为不健康。
  • 卷挂载权限:若挂载了本地目录到/var/lib/postgresql/data,Ubuntu系统下需确保该目录属于UID为999的postgres用户,否则PostgreSQL无法写入数据,启动后会直接退出。执行以下命令修复权限:
    sudo chown -R 999:999 ./你的db数据目录路径
    
  • 重启策略:如果db服务配置了restart: always,但容器启动完成后直接退出(比如镜像启动脚本执行完毕就结束),会导致无限重启。不过cloudnative-pg的PostgreSQL镜像默认是持续运行的,大概率是配置环节出了问题。

3. 更换官方PostgreSQL镜像测试

尝试替换为官方postgres:16镜像,排除cloudnative-pg镜像的兼容性问题。修改docker-compose中db服务的image字段后,执行:

sudo docker compose down -v && sudo docker compose up

观察db容器是否能正常启动。

4. 检查系统资源

Ubuntu系统内存至少需2G以上,PostgreSQL启动需要一定内存支持,内存不足会导致启动失败后退出。用以下命令查看内存使用情况:

free -h

5. 单独启动db容器验证

脱离compose单独启动db容器,确认容器本身功能正常:

sudo docker run -d --name test-db -e POSTGRES_USER=maybe -e POSTGRES_PASSWORD=你的密码 -e POSTGRES_DB=maybe ghcr.io/cloudnative-pg/postgresql:16

查看启动日志:

docker logs test-db

尝试连接数据库:

docker exec -it test-db psql -U maybe

如果能正常连接,说明问题出在compose配置或其他服务的依赖逻辑上。

6. 清理旧容器和卷后重新部署

旧的卷数据可能存在损坏,导致初始化失败。彻底清理后重新部署:

sudo docker compose down -v
sudo docker compose pull && sudo docker compose up

内容的提问来源于stack exchange,提问作者Skye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 09:54:51