Docker Compose双数据库容器配置中无法连接第二个MySQL容器
问题解决:phpMyAdmin无法连接第二个MySQL容器
问题根源
你给phpmyadmin2配置的PMA_PORT=3307是错误的——3307是宿主机上的映射端口,Docker容器之间通信时,必须使用容器内部的端口,也就是MySQL默认的3306。容器间通过服务名(mysql_logs)访问时,直接用容器自身的端口即可,和宿主机的映射端口无关。
修正后的核心配置
修改phpmyadmin2的环境变量,同时添加依赖确保mysql_logs先启动:
phpmyadmin2: image: phpmyadmin restart: always ports: - 8081:80 environment: - PMA_HOST=mysql_logs - PMA_PORT=3306 # 改为容器内部的MySQL默认端口 - PMA_USER=root - PMA_PASSWORD=root depends_on: - mysql_logs # 保证mysql_logs服务优先启动
进阶优化(可选)
如果MySQL 5.6启动较慢,可能出现phpMyAdmin启动后MySQL还未就绪的情况,可给mysql_logs添加健康检查,确保服务就绪后再启动phpMyAdmin:
mysql_logs: image: mysql:5.6 restart: on-failure environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: logs ports: - '3307:3306' healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot"] interval: 10s timeout: 5s retries: 5
然后更新phpmyadmin2的依赖配置(需Docker Compose 3.x版本):
phpmyadmin2: # 其他配置不变 depends_on: mysql_logs: condition: service_healthy
验证步骤
- 停止当前服务:
docker-compose down - 重新启动服务:
docker-compose up -d - 访问
localhost:8081测试数据库连接
内容的提问来源于stack exchange,提问作者Fisher
相关产品推荐
相关产品推荐

