2017-02-13 28 views
2
Predis不連接

我試圖連接使用泊塢窗Redis的PHP(撰寫)多克爾 - 撰寫通過PHP

泊塢窗,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連接它告訴我它無法獲得地址信息:

Fatal error: Uncaught Predis\Connection\ConnectionException: php_network_getaddresses: getaddrinfo failed: Name or service not known [tcp://redis:6379] in /var/www/htdocs/vendor/predis/predis/src/Connection/AbstractConnection.php on line 155

這是我想要的連接方法:

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

而且當我凝視redis docker容器並查看/etc/hosts沒有redis主機名。至少我期待它在這裏,因爲我試圖在docker-compose.yml中鏈接它。

我該怎麼配置錯誤?

回答

1

你忘了添加redis容器到dev網絡。

您可以更新泊塢窗,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.你永遠不會在hosts文件中找到鏈接的容器IP和主機名。 Docker使用內部DNS服務

+0

謝謝,愚蠢的,我忘了。它的作品:) – Paul

+0

它發生...... :) –

相關問題