[英]Wordpress on docker-compose no run
這是我的 docker-compose.yml
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 容器停止。
這是我的 docker 日志 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
為什么會發生這種情況?
解決方法:
記得將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 鏡像官方 Dockerhub 頁面上沒有提到
您是否在 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 容器之前啟動 db 容器。 (一個links
屬性會做同樣的事情,但盡量保持簡單。)
注意:
默認情況下,Compose 為您的應用程序設置單個網絡。 服務的每個容器都加入默認網絡,並且可以被該網絡上的其他容器訪問,並且可以在與容器名稱相同的主機名上被它們發現。
鏈接允許您定義額外的別名,通過這些別名可以從另一個服務訪問服務。 它們不需要啟用服務進行通信 -默認情況下,任何服務都可以以該服務的名稱訪問任何其他服務。
除非您真正了解自己在做什么,否則我不會亂搞網絡,因為在大多數情況下,默認設置可以正常工作。 如果您有一些特殊情況,您可以隨時對其進行優化。
在 'db:' 下添加這些為我解決了這個問題。
command: --default-authentication-plugin=mysql_native_password
restart: always
我沒有使用 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
現在開始了。
如前所述,您應該添加
depends_on:
- db
但在此之后,我仍然收到有關連接問題的消息。 只有這個明確的問題 - 第二種選擇:
networks:
local:
這解決了錯誤PHP Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in Standard input code on line 22
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.