试图学习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