2016-08-21 137 views
4

我已经开始了一个泊坞窗容器用下面的命令搬运工,撰写+外部容器

docker run --name mysql --restart always -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7.14 

,然后想一个WordPress站点有以下泊坞窗,compose.yml文件

version: '2' 

services: 
    wordpress: 
     image: wordpress 
     external_links: 
      - mysql:mysql 
     ports: 
      - 80:80 
    environment: 
     WORDPRESS_DB_USER: root 
     WORDPRESS_DB_PASSWORD: password 
    volumes: 
     - /var/www/somesite.com:/var/www/html 
连接

但我不断收到以下错误

Starting somesitecom_wordpress_1 
Attaching to somesitecom_wordpress_1 
wordpress_1 | 
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 19 
wordpress_1 | 
wordpress_1 | MySQL Connection Error: (2002) Connection refused 

这似乎是external_links不工作。

任何想法我做错了什么?

回答

11

您的链接正在工作,但您在Docker内的单独网络上。从docker-compose.yml docs

Note: If you’re using the version 2 file format, the externally-created containers must be connected to at least one of the same networks as the service which is linking to them.

为了解决这个问题,你可以创建自己的网络:

version: '2' 

networks: 
    dbnet: 
    external: 
     name: dbnet 

services: 
    wordpress: 
     image: wordpress 
     ports: 
      - 80:80 
     environment: 
      WORDPRESS_DB_USER: root 
      WORDPRESS_DB_PASSWORD: password 
     volumes: 
      - /var/www/somesite.com:/var/www/html 
     networks: 
      - dbnet 

注意最近版本:

docker network create dbnet 
docker network connect dbnet mysql 

然后配置你的码头工人,compose.yml的Docker,你不需要链接容器,DNS服务应该为你做名称解析。

+0

真棒,解决这个问题,有没有办法解决有特定的用户名和密码,并连接。我得到以下错误:MySQL连接错误:(1045)访问拒绝用户'someuser'@'somesitecom_wordpress_1.db-network'(使用密码:YES)'我最好喜欢避免与root连接。 – sbarow

+0

这就是我的专业之外的所有mysql配置。 [Docker集线器上的mysql页面](https://hub.docker.com/_/mysql/)描述了它用来设置登录的各种env变量。您可以在Docker外用于用户登录的mysql上设置的大多数方法也将应用于容器内部。 – BMitch

相关问题