Docker部署Laravel项目:phpMyAdmin报"No address associated with hostname"错误求助
解决phpMyAdmin无法连接MySQL容器的问题
我一眼就瞅出问题所在了——phpmyadmin服务的环境变量格式写错了!你在定义PMA_HOST这类变量时用了冒号:,但Docker Compose的environment配置里,键值对得用等号=分隔,或者改用标准的YAML映射写法,不然Docker没法正确识别这些变量。
问题根源
错误提示里的php_network_getaddresses: getaddrinfo failed,本质是phpMyAdmin找不到database这个主机对应的地址。之所以会这样,是因为你用冒号代替了等号,导致PMA_HOST这个关键变量根本没被正确设置,phpMyAdmin自然不知道该连哪个数据库容器。
修正后的phpmyadmin服务配置
下面给你两种可行的修正写法,选你顺手的就行:
写法一(数组形式,用等号分隔键值)
#PHPMyAdmin Service phpmyadmin: container_name: phpmyadmin image: phpmyadmin/phpmyadmin ports: - "8992:80" depends_on: - database environment: - PMA_HOST=database - MYSQL_USER=phpmyadmin - MYSQL_PASSWORD=phpmyadmin - MYSQL_ROOT_PASSWORD=123456 - UPLOAD_LIMIT=3000000000
写法二(YAML映射格式,更直观的键值对)
#PHPMyAdmin Service phpmyadmin: container_name: phpmyadmin image: phpmyadmin/phpmyadmin ports: - "8992:80" depends_on: - database environment: PMA_HOST: database MYSQL_USER: phpmyadmin MYSQL_PASSWORD: phpmyadmin MYSQL_ROOT_PASSWORD: 123456 UPLOAD_LIMIT: 3000000000
额外小提醒
虽然depends_on能保证phpmyadmin在database容器之后启动,但没法确保MySQL服务已经完全初始化完成。如果偶尔还是碰到连接超时的情况,可以给phpmyadmin加个restart: unless-stopped的重启策略,或者用脚本等待数据库就绪——不过大部分情况下,修正环境变量格式就能解决你当前的问题了。
内容的提问来源于stack exchange,提问作者Bob.B
相关产品推荐
相关产品推荐

