docker 部署的PHP环境 getaddrinfo failed 解决方案

博客 · 本文由 · ITer · 发布于 2年前 · 1776 阅读

在 docker 部署PHP环境时经常会出现下面的错误:

php_network_getaddresses: getaddrinfo failed: Name or servicenot known

其原因时因为 php程序连接数据库时的域名映射IP地址失效了(具体原因未知,如有知道相关原因的同学请留言告知)

临时解决方案:

1.重启 docker 容器就可以恢复

如果不想经常重新容器,把数据库的容器名映射到宿主机,然后直接走IP

docker-compose 配置:

...
mysqlname:
    image: mysql:5.6
    volumes:
      - ../mysql/conf:/etc/mysql:ro
      - ../mysql/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: 123456
    ports:
      - 3306:3306
...

如下,mysqlname 即为数据库容器名,将其替换成,宿主机IP既可以(假设宿主机IP:127.0.0.1)

'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=mysqlname;dbname=demo',
            'username' => 'root',
            'password' => '123456',
            'charset' => 'utf8',
        ],

改成:

'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
            'username' => 'root',
            'password' => '123456',
            'charset' => 'utf8',
        ],

docker部署的php环境连接数据库时域名映射IP地址经常失效的原因,有了解的同学可以留言告知一下,相信网络程序的能力,万分感谢!

评论数量:0