Docker部署Laravel+MySQL+phpMyAdmin时phpMyAdmin登录报错求助
解决思路
1. 确保phpMyAdmin与MySQL处于同一网络
你的phpmyadmin服务未显式指定加入zervetek网络,尽管配置了depends_on,但Docker默认会将未指定网络的服务加入默认网络,导致它无法解析database主机名。修改phpmyadmin部分配置,添加网络声明:
phpmyadmin: depends_on: - database image: phpmyadmin/phpmyadmin restart: always ports: - 8088:80 environment: - PMA_HOST=database - MYSQL_ROOT_PASSWORD=123 networks: - zervetek # 加入与MySQL相同的网络
2. 验证MySQL服务是否完全就绪
depends_on仅保证容器启动顺序,不确保MySQL服务已完成初始化。可以通过以下方式排查:
- 查看MySQL容器日志:
docker logs database,确认日志中出现ready for connections字样。 - 若MySQL启动较慢,可给phpMyAdmin添加启动延迟,避免提前发起连接:
phpmyadmin: # 其他配置不变 command: sh -c "sleep 10 && apache2-foreground"
3. 检查主机名与环境变量一致性
确认PMA_HOST的值database与MySQL服务名称完全一致(Docker服务名大小写敏感),同时核对MYSQL_ROOT_PASSWORD与MySQL容器的对应配置是否匹配。
4. 手动测试容器间网络连通性
进入phpMyAdmin容器,直接测试与MySQL的网络连通性:
- 获取phpMyAdmin容器ID:
docker ps | grep phpmyadmin - 进入容器:
docker exec -it <容器ID> /bin/bash - 执行ping命令:
ping database,若无法ping通则说明网络配置存在问题;若能ping通,再测试MySQL连接:mysql -h database -u root -p123,验证是否能成功连接。
5. 重建容器与网络
Docker网络缓存可能引发异常,尝试清理现有容器和网络后重新部署:
docker-compose down -v # -v会删除关联卷,若有重要数据请先备份 docker-compose up --build
内容的提问来源于stack exchange,提问作者dilshan38
相关产品推荐
相关产品推荐

