docker组成+外部容器

我已经用下面的命令启动了一个docker容器

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 

然后想用下面的docker-compose.yml文件连接一个WordPress站点

 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不工作。

任何想法我做错了什么?

您的链接正在工作,但您在Docker内部的单独networking上。 从docker-compose.yml文档 :

注意:如果您使用的是版本2文件格式,外部创build的容器必须至less连接到与链接到它们的服务相同的networking。

要解决这个问题,你可以创build你自己的networking:

 docker network create dbnet docker network connect dbnet mysql 

然后configuration您的docker-compose.yml:

 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,你不需要链接容器,DNS服务应该为你做名字parsing。