我正在尝试使用 docker ( compose) 将 PHP 与 redis 连接
docker-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 失败:/var/www/htdocs/vendor/predis/predis/src/Connection/AbstractConnection.php 中的名称或服务未知 [tcp://redis:6379] 155号线
这是我尝试连接的方式:
$client = new \Predis\Client([
'host' => 'redis',
]);
另外,当我查看 redis docker 容器并查看时/etc/主机没有 redis 主机名。至少我期待它在这里,因为我试图将它链接到 docker-compose.yml 中。
我配置错了什么?
你忘记添加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
另外,您可以省略容器的links
如果你定义了bridge
网络。
另外 2. 你永远不会在以下位置找到链接的容器 IP 和主机名hosts
文件。 Docker 使用内部 DNS 服务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)