2016-08-21 134 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

相關問題