2016-07-16 23 views
7

這是我的搬運工,compose.ymlWordPress的上泊塢窗,構成無運行

version: '2' 
services: 
    wordpress: 
    image: wordpress 
    ports: 
     - "8080:80" 
    environment: 
     WORDPRESS_DB_PASSWORD: example 
    db: 
    image: mysql:5.7 
    environment: 
     MYSQL_ROOT_PASSWORD: example 

影響業務的正常運行,但是,幾秒鐘後,WordPress的容器停止。

這是我的搬運工日誌WordPress的容器:

WordPress not found in /var/www/html - copying now... 
Complete! WordPress has been successfully copied to /var/www/html 

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known 

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

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 

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

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 
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Warning: mysqli::mysqli(): 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 

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

爲什麼會出現這種情況?

+0

你應該使用'搬運工日誌顯示WordPress的容器的日誌' –

+0

@ThanhNguyenVan編輯我的問題,那就是搬運工日誌WordPress的容器 – alvarezsh

+0

什麼'主機'參數你在wordpress源代碼中用於mysql連接嗎? –

回答

0

您是否在您的Compose文件wordpress服務中設置了數據庫主機(以及其他需要的MySql屬性)(除了密碼,在您的文章中顯示)?例如:

environment: 
    WORDPRESS_DB_PASSWORD: example 
    WORDPRESS_DB_HOST: db 
    WORDPRESS_DB_USER: {xxx} 
    WORDPRESS_DB_NAME: {xxx} 
    WORDPRESS_TABLE_PREFIX: {xxx} 

特別是在您的設置中的「主機」值應該是db。你不應該做任何鏈接,雖然這將是一個好主意,

depends_on: 
    - db 

添加到將設置的依賴爲了你的WordPress容器之前啓動數據庫容器你的WordPress服務塊。 (A links屬性會做同樣的,而是試圖讓事情變得簡單。)

注:

默認情況下撰寫設置爲你的應用程序一個單一的網絡。每個 服務容器都會加入默認網絡,並且該網絡上的其他容器都可以訪問 ,並且可以通過 發現它們與容器名稱相同的主機名。

鏈接允許您定義額外的別名,通過這些別名可以從另一服務訪問服務 。他們是不需要啓用 服務進行通信 - 默認情況下,任何服務可以達到任何其他 服務在該服務的名稱

https://docs.docker.com/compose/networking/#/links

我不會浪費時間與網絡,除非你真的瞭解你在做什麼,因爲在大多數情況下,默認值將正常工作。如果你有一些特殊情況,你可以隨時優化。

0

我沒有使用YML,但有相同的日誌,並沒有工作

docker run -dP --link elated_yonath -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

但後來我發現,我要補充:MySQL來連接容器

docker run -dP --link elated_yonath:mysql -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

現在開始。

2

解決方案:

記得mysql的容器鏈接到WordPress的容器:

links: 
    - db:mysql 

像這樣:

version: '2' 
services: 
    wordpress: 
    image: wordpress 
    ports: 
     - "8080:80" 
    links: 
     - db:mysql 
    environment: 
     WORDPRESS_DB_PASSWORD: example 
    db: 
    image: mysql:5.7 
    environment: 
     MYSQL_ROOT_PASSWORD: example 

這重要的細節上沒有WordPress image official Dockerhub page

提到
+0

鏈接中的'mysql'主機別名很重要: – bbeecher

0

anwser對我來說,因爲我沒有足夠的聲譽投票是anwser,我在這裏把它複製:

depends_on: - db 這只是確保數據庫容器是wordpress容器之前完全加載。您需要告訴碼頭從wordpress容器鏈接db容器以引用它的名稱。

docker-compose引擎蓋下做些什麼是走IP泊塢窗給出了db容器,並添加/etc/hosts進入到wordpress容器,因此您可以通過名稱來引用它。

因此,嘗試添加該WordPress的部分 links: - db