Docker部署Piwigo提示Cannot connect to server问题求助
Piwigo Docker 连接数据库失败(Cannot connect to server)的原因及修复方法
数据库容器未完全启动
Docker Compose 启动多容器时,Piwigo 容器可能先于数据库容器完成启动,此时数据库服务尚未就绪,导致连接失败。
修复:- 停止所有容器:
docker-compose down - 重新启动后等待数据库容器就绪:
docker-compose up -d,可通过docker logs <你的db容器名>查看日志,确认出现类似"ready for connections"的就绪提示后,再访问Piwigo配置页面。 - 进阶方案:修改
docker-compose.yml,给Piwigo容器添加依赖和健康检查,确保数据库就绪后再启动Piwigo:
在piwigo服务节点下添加:
同时给db服务节点添加健康检查配置:depends_on: db: condition: service_healthyhealthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "piwigo", "-ppiwigo"] interval: 10s timeout: 5s retries: 5
- 停止所有容器:
数据库服务器地址填写错误
Piwigo容器与数据库容器是独立的隔离环境,不能用localhost作为数据库地址,必须使用Docker Compose中数据库服务的名称(默认是db)。
修复:在Piwigo配置页面的「数据库服务器」字段填写db,而非localhost或127.0.0.1。数据库账号配置不匹配
确认docker-compose.yml中数据库的环境变量与你在Piwigo配置中填写的信息一致:
检查db服务的环境变量配置,确保以下三项均为piwigo:environment: MYSQL_DATABASE: piwigo MYSQL_USER: piwigo MYSQL_PASSWORD: piwigo如果配置不一致,修改
docker-compose.yml后执行docker-compose down && docker-compose up -d重启容器。容器网络异常
Docker Compose默认会为项目创建专属网络,确保Piwigo和数据库容器在同一网络内。
修复:用docker network ls找到当前项目对应的网络,再通过docker inspect <网络名称>确认两个容器都在该网络中。若不在,重新执行docker-compose up -d让容器加入正确网络。
内容的提问来源于stack exchange,提问作者SpicyyRiice
相关产品推荐
相关产品推荐

