docker上的Wordpress不运行
这是我的docker-compose.ymldocker上的Wordpress不运行,wordpress,docker,docker-compose,Wordpress,Docker,Docker Compose,这是我的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 服务正常运行,
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容器停止
这是我的docker日志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
links:
- db:mysql
为什么会发生这种情况?您是否在撰写文件wordpress服务中设置了DB主机(以及其他所需的MySql属性)(而不是帖子中显示的密码)?e、 g: 特别是“主机”值,在您的设置中应该是
db
。你不必做任何链接,尽管添加链接是个好主意
depends_on:
- db
到您的wordpress服务块,它将设置在wordpress容器之前启动db容器的依赖顺序。(一个links
属性也可以做同样的事情,但要尽量保持简单。)
注:
默认情况下,Compose为您的应用程序设置单个网络。每个
服务的容器加入默认网络,并且是
可由该网络上的其他容器访问,并可由
它们的主机名与容器名称相同
链接允许您定义服务使用的额外别名
可从其他服务访问。不需要它们来启用
要通信的服务-默认情况下,任何服务都可以到达任何其他服务
以该服务的名称提供服务
除非您真正了解自己在做什么,否则我不会在网络上乱搞,因为在大多数情况下,默认设置都可以正常工作。如果您有一些特殊情况,您可以在以后对其进行优化。我没有使用yml,但有相同的日志,这不起作用
docker run -dP --link elated_yonath -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress
但后来我发现,我必须添加:mysql到链接容器中
docker run -dP --link elated_yonath:mysql -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress
现在它开始了。解决方案: 记住将mysql容器链接到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
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
这个重要的细节没有在上提到,这对我来说很有效,因为我没有足够的声誉去投票。安瑟,我复制到这里:
取决于:
-分贝
这只是确保数据库容器在wordpress
容器之前已完全加载。您需要告诉docker从wordpress
容器链接db
容器,以按名称引用它
docker compose
在引擎盖下所做的是获取ip docker提供的db
容器,并向wordpress
容器添加一个/etc/hosts
条目,以便您可以按名称引用它
因此,请尝试将此添加到wordpress部分
链接:
-分贝
将这些添加到“db:”下为我解决了这个问题
command: --default-authentication-plugin=mysql_native_password
restart: always
如前所述,您应该添加
depends_on:
- db
但在这之后,我仍然收到关于连接问题的消息。只有这个明确的问题——第二个选择:
networks:
local:
这就解决了错误
PHP警告:mysqli::\u构造():PHP\u网络\u getaddresses:getaddrinfo失败:第22行标准输入代码中的名称解析暂时失败,这就是docker logs wordpress Container在wordpress源代码中mysql连接使用了哪些
host
参数?我在docker compose一节中引用了这个示例链接中的mysql
主机别名在这里很重要:(