Docker-compose Predis不是通过PHP连接的

我正在尝试使用docker连接PHP和redis(撰写)

泊坞窗,compose.yml

version: '2' services: redis: image: redis:3.2.2 php: image: company/php:dev7 volumes: - .:/var/www/ networks: - net links: - redis nginx: image: company/nginx volumes: - .:/var/www/ - ./docker/nginx_conf:/etc/nginx/conf.d/ networks: - net ports: - 80:80 networks: net: driver: bridge 

这一切运作良好,我能够运行nginx和php。 但是,当我试图与Redit连接它告诉我它不能得到地址信息:

致命错误:未捕获Predis \ Connection \ ConnectionException:php_network_getaddresses:getaddrinfo失败:名称或服务未知[/ tcp:// redis:6379]在/var/www/htdocs/vendor/predis/predis/src/Connection/AbstractConnection.php在线155

这是我试图连接的方式:

 $client = new \Predis\Client([ 'host' => 'redis', ]); 

另外,当我看着redis docker容器,看看/ etc / hosts ,没有redis主机名。 至less我期待在这里,因为我试图在docker-compose.yml中链接它。

我configuration错了什么?

您忘记添加redis容器到dev网络。

你可以更新docker-compose.yml

 version: '2' services: redis: image: redis:3.2.2 networks: - net php: image: company/php:dev7 volumes: - .:/var/www/ networks: - net nginx: image: company/nginx volumes: - .:/var/www/ - ./docker/nginx_conf:/etc/nginx/conf.d/ networks: - net ports: - 80:80 networks: net: driver: bridge 

另外,如果您定义了bridge ,则可以省略容器的links

另外2.你永远不会找到hosts文件中的链接容器IP和主机名。 Docker使用内部DNS服务