[英]Wordpress on docker-compose no run
这是我的 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 容器停止。
这是我的 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
为什么会发生这种情况?
解决方法:
记得将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
这个重要的细节在WordPress 镜像官方 Dockerhub 页面上没有提到
您是否在 Compose 文件 wordpress 服务(密码除外,显示在您的帖子中)中设置数据库主机(和其他需要的 MySql 属性)? 例如:
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 为您的应用程序设置单个网络。 服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名上被它们发现。
链接允许您定义额外的别名,通过这些别名可以从另一个服务访问服务。 它们不需要启用服务进行通信 -默认情况下,任何服务都可以以该服务的名称访问任何其他服务。
除非您真正了解自己在做什么,否则我不会乱搞网络,因为在大多数情况下,默认设置可以正常工作。 如果您有一些特殊情况,您可以随时对其进行优化。
在 'db:' 下添加这些为我解决了这个问题。
command: --default-authentication-plugin=mysql_native_password
restart: always
我没有使用 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
现在开始了。
如前所述,您应该添加
depends_on:
- db
但在此之后,我仍然收到有关连接问题的消息。 只有这个明确的问题 - 第二种选择:
networks:
local:
这解决了错误PHP Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in Standard input code on line 22
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.