Docker上的Wordpress - 没有运行

时间:2016-07-16 02:24:44

标签: 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

服务正常运行,但几秒钟后,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

为什么会这样?

6 个答案:

答案 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

WordPress image official Dockerhub page

未提及此重要细节

答案 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为您的应用设置单个网络。每   服务容器加入默认网络,两者都是   该网络上的其他容器可以访问,并且可以被发现   它们的主机名与容器名相同。

     

链接允许您定义服务所使用的额外别名   可从其他服务到达。启用不需要   沟通服务 - 默认情况下,任何服务都可以到达任何其他服务   以该服务名称提供服务

     
    

https://docs.docker.com/compose/networking/#/links

  

除非你真的了解自己在做什么,否则我不会乱用网络,因为在大多数情况下,默认设置都能正常工作。如果你有一些特殊情况,你可以随时对其进行优化。

答案 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行的标准输入代码中的名称解析暂时失败