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。