这是我的docker-compose.yml
version: '2'
services:
wordpress:
image: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_PASSWORD: example
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
服务正常运行,但几秒钟后,wordpress容器停止。
这是我的码头记录wordpress容器:
WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10
为什么会这样?
答案 0 :(得分:7)
<强>解决方案:强>
请记住将mysql容器链接到wordpress容器:
links:
- db:mysql
像这样:
version: '2'
services:
wordpress:
image: wordpress
ports:
- "8080:80"
links:
- db:mysql
environment:
WORDPRESS_DB_PASSWORD: example
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
未提及此重要细节
答案 1 :(得分:1)
您是否在Compose文件wordpress服务中设置了数据库主机(以及其他所需的MySql属性)(除了密码,在帖子中显示)? e.g:
environment:
WORDPRESS_DB_PASSWORD: example
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: {xxx}
WORDPRESS_DB_NAME: {xxx}
WORDPRESS_TABLE_PREFIX: {xxx}
特别是“主机”值,您的设置应为db
。您不应该进行任何链接,尽管添加
depends_on:
- db
到你的wordpress服务块,它将设置依赖顺序以在wordpress容器之前启动db容器。 (links
属性会做同样的事情,但试图保持简单。)
注意:
默认情况下,Compose为您的应用设置单个网络。每 服务容器加入默认网络,两者都是 该网络上的其他容器可以访问,并且可以被发现 它们的主机名与容器名相同。
链接允许您定义服务所使用的额外别名 可从其他服务到达。启用不需要 沟通服务 - 默认情况下,任何服务都可以到达任何其他服务 以该服务名称提供服务。
除非你真的了解自己在做什么,否则我不会乱用网络,因为在大多数情况下,默认设置都能正常工作。如果你有一些特殊情况,你可以随时对其进行优化。
答案 2 :(得分:1)
这anwser对我有用,因为我没有足够的声誉来投票赞成,我在这里复制:
depends_on:
- db
这只是确保数据库容器在wordpress
容器之前完全加载。您需要告诉docker链接db
容器中的wordpress
容器,以便按名称引用它。
引擎盖下的docker-compose
做的是ip docker提供db
容器,并在/etc/hosts
容器中添加wordpress
条目,以便您可以按名称引用它
所以尝试将其添加到wordpress部分
links:
- db
答案 3 :(得分:0)
我没有使用yml,但是有相同的日志,这不起作用
functionB
但后来我发现,我必须添加:mysql到链接容器
docker run -dP --link elated_yonath -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress
现在开始了。
答案 4 :(得分:0)
将这些添加到“ db:”下为我解决了此问题。
command: --default-authentication-plugin=mysql_native_password
restart: always
答案 5 :(得分:0)
如前所述,您应该添加
depends_on:
- db
但是在此之后,我仍然收到有关连接问题的消息。而且只有这个明确的问题-第二个选择:
networks:
local:
此解决错误 PHP警告:mysqli :: __ construct():php_network_getaddresses:getaddrinfo失败:第22行的标准输入代码中的名称解析暂时失败