Wordpress无法在IBM Bluemix上看到链接的mysql容器和Docker组合

时间:2016-05-07 12:07:24

标签: docker ibm-cloud docker-compose

我有一个简单的docker-compose.yml(wp图像基于ibmjstart / wp-bluemix-container,db image是mariadb)

db:
  image: registry.eu-gb.bluemix.net/foo/db
  environment:
    MYSQL_ROOT_PASSWORD: examplepass
  ports:
    - 3306:3306
  volumes:
    - /var/lib/mysql

wp:
   image: registry.eu-gb.bluemix.net/foo/wp
   links:
     - db:mysql
   ports:
     - 80:80

执行docker compose up -d后我得到了

error: missing WORDPRESS_DB_HOST and MYSQL_PORT_3306_TCP environment variables
  Did you forget to --link some_mysql_container:mysql or set an external db
  with -e WORDPRESS_DB_HOST=hostname:port?

如您所见,db容器已链接。

当我在没有使用docker-compose的情况下执行相同操作时,使用

$ cf ic run -v mysql-vol:/var/lib/mysql --name wpdb  -d registry.eu-gb.bluemix.net/foo/db    
$ cf ic run -e MYSQL_ROOT_PASSWORD=my-secret-pw  -v web-files:/var/www/html/ --link wpdb:mysql  -d registry.eu-gb.bluemix.net/foo/wp

一切都运作良好。

我在cf ic login

之后导出了docker变量

更多信息:

root@vps:~/test/compose# docker-compose --version
docker-compose version 1.7.0, build 0d7bf73
root@vps:~/test/compose# docker --version
Docker version 1.10.3, build 20f81dd
root@vps:~/test/compose# cf --version
cf version 6.15.0+fa1bfe2-2016-01-13
root@vps:~/test/compose# cf ic --version
Docker version 1.10.3, build 20f81dd

更新:据我所知,这个问题是由命名引起的:

此docker-compose.yml会抛出错误

db:
  image: registry.eu-gb.bluemix.net/foo/db
  environment:
    MYSQL_ROOT_PASSWORD: examplepass
  container_name:
    wpdb
  ports:
    - 3306:3306
  volumes:
    - /var/lib/mysql

wp:
   image: registry.eu-gb.bluemix.net/foo/wp
   links:
     - wpdb:mysql
   ports:
     - 80:80

错误:服务" wp"有一个服务链接" wpdb"哪个不存在。

但是,如果您将服务和容器命名为相同,则语法正常。

db:
  image: registry.eu-gb.bluemix.net/foo/db
  environment:
    MYSQL_ROOT_PASSWORD: examplepass
  container_name:
    db
  ports:
    - 3306:3306
  volumes:
    - /var/lib/mysql

wp:
   image: registry.eu-gb.bluemix.net/foo/wp
   links:
     - db:mysql
   ports:
     - 80:80

虽然语法正常并且容器已链接,但wordpress容器会记录此

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

这是Bluemix中的错误吗?看起来像/ etc / hosts /相关问题

很抱歉很长的帖子:)

1 个答案:

答案 0 :(得分:2)

@bartimar是的,问题与/etc/hosts文件有关。它需要有一个db容器的条目,但它没有创建它。

我可以在prod-lon02-vizio1环境中重新创建您的问题,但它在prod-lon02-kraken1环境中运行良好。

我建议您是否要手动迁移到prod-lon02-kraken1环境以将docker-compose.yml与IBM容器一起使用。无论如何,所有环境都将在5月25日自动迁移。

要迁移,只需运行以下命令:

$ cf ic reprovision

请注意,您的图片已迁移到新环境,但所有正在运行的容器都已删除,您必须在新环境中重新创建它们。因此请谨慎使用此选项。

有关详细信息,请查看以下链接:

https://developer.ibm.com/bluemix/2016/03/24/new-deployment-architecture-for-containers/?linkId=22660520