alv*_*zsh 9 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
Run Code Online (Sandbox Code Playgroud)
服务正常运行,但几秒钟后,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
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
解:
记得将mysql容器链接到wordpress容器:
links:
- db:mysql
Run Code Online (Sandbox Code Playgroud)
像这样:
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
Run Code Online (Sandbox Code Playgroud)
WordPress图像官方Dockerhub页面上未提及此重要细节
这个anwser对我有用,因为我没有足够的声望来投票这个 anwser,我把它复制到这里:
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
这只是确保数据库容器在wordpress
容器之前完全加载。您需要告诉 docker 将db
容器从wordpress
容器链接起来以按名称引用它。
什么docker-compose
引擎盖下确实是走IP泊坞窗给人的db
容器,并添加/etc/hosts
到进入wordpress
容器,所以你可以通过名字引用它。
所以尝试将其添加到 wordpress 部分
links:
- db
Run Code Online (Sandbox Code Playgroud)
您是否在您的 Compose 文件 WordPress 服务中设置数据库主机(以及其他所需的 MySql 属性)(密码除外,在您的帖子中显示)?例如:
\nenvironment:\n WORDPRESS_DB_PASSWORD: example\n WORDPRESS_DB_HOST: db\n WORDPRESS_DB_USER: {xxx}\n WORDPRESS_DB_NAME: {xxx}\n WORDPRESS_TABLE_PREFIX: {xxx}\n
Run Code Online (Sandbox Code Playgroud)\n特别是“主机”值,在您的设置中应该是db
。您不必执行任何链接,但最好添加
depends_on:\n - db\n
Run Code Online (Sandbox Code Playgroud)\n到您的 WordPress 服务块,它将设置依赖顺序以在 WordPress 容器之前启动 db 容器。(links
属性也可以做同样的事情,但尽量让事情变得简单。)
笔记:
\n\n\n默认情况下,Compose 会为您的应用程序设置一个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以通过与容器名称相同的主机名被它们发现。
\n链接允许您定义额外的别名,通过这些别名可以从另一个服务\n访问另一个服务。它们不需要启用\n服务进行通信 -默认情况下,任何服务都可以通过该服务\xe2\x80\x99s 名称访问任何其他\n服务。
\n\n\n\n
除非您真正了解自己在做什么,否则我不会乱搞网络,因为在大多数情况下,默认值都可以正常工作。如果您有一些特殊情况,您可以稍后进行优化。
\n 归档时间: |
|
查看次数: |
8804 次 |
最近记录: |