試圖學習Docker,我無法讓兩個容器看到對方。當使用docker-compose版本2格式的文件時,我收到從前端到達數據庫的錯誤。我嘗試了我認爲是一個萬無一失的方法 - using the WordPress example straight from the Docker website。使用這個確切的例子,數據庫不能被wordpress容器找到。這是它顯示的錯誤:Docker組合v2容器沒有找到彼此(雖然v1)
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
我把它歸結爲一個簡單的例子來顯示工作版本1文件和非工作版本2文件。兩者之間的唯一區別是刪除版本號和「服務」分組。
版本1泊塢窗,撰寫文件,它的工作
web:
image: wordpress
links:
- mysql
environment:
- WORDPRESS_DB_PASSWORD=password
ports:
- "8080:80"
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=wordpress
2版搬運工,撰寫不起作用
version: '2'
services:
web:
image: wordpress
links:
- mysql
environment:
- WORDPRESS_DB_PASSWORD=password
ports:
- "8080:80"
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=wordpress
我實際上並不想使用這些設置運行WordPress,只是試圖找出爲什麼一個docker-compose版本2文件不起作用,當完全相同的文件,格式化爲版本1文件,確實工作。我已經嘗試了許多其他連接到數據庫的示例應用程序,我可以不讓它們工作。
環境我使用:
$ uname -a
Linux vir-docker 4.4.0-62-generiC#83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ docker -v
Docker version 1.13.1, build 092cba3
$ docker-compose -v
docker-compose version 1.11.1, build 7c5d5e4
在版本2中可能改進了安全性和/或網絡。您還需要將MySQL主機和端口設置爲服務「mysql」的名稱。 – rocksteady
[docker website](https://docs.docker.com/compose/wordpress/)上的示例具有MySQL主機和端口集,甚至無法正常工作。 – justinvoelker
版本:'3'適用於我...但不是2 – user672009