docker上的Wordpress不运行

docker上的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 服务正常运行,

这是我的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
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
主机别名在这里很重要:(