>在我的上一篇文章中,我們介紹了什麼是docker以及如何使用幾個命令啟動和運行。但是,我們還沒有做任何有用的事情。有很多方法可以使用Docker獲得WordPress環境,在本文中,我將向您展示如何手動設置Docker容器與WordPress一起使用。如果您想快速介紹Docker,可以跳回這裡的第一篇文章。
鑰匙要點>
如果您運行Docker PS,您將看到WordPressDB容器未運行。它應該運行。運行Docker登錄WordPressDB,您將看到這樣的消息:
>docker run --name wordpressdb -d mysql:5.7
為什麼?這是因為當我們第一次構建容器時,我們沒有將root密碼作為參數。因此,讓我們這樣做。首先,我們需要使用Docker RM WordPressDB刪除使用名稱WordPressDB創建的容器。這是因為新容器將使用相同的名稱,並且不能有兩個具有相同名稱的容器。
>讓我們再次創建我們的容器。首次創建容器時,我們需要傳遞環境變量。它應該看起來像這樣:
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
如果您現在檢查Docker記錄WordPressDB,則會看到一條很長的消息,但不用擔心,它可以正常工作。同樣,運行Docker PS,您會看到一個具有活性和運行的名稱WordPressDB的容器。
>
>您也可以將其他環境變量傳遞給容器,您可以在MySQL映像文檔上找到完整的列表。這是另一個示例:
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
如果我們使用MySQL_DATABASE,則確保創建了具有該名稱的數據庫。這樣,我們確定數據庫和根密碼的名稱是什麼。您還可以使用密碼和數據庫創建另一個用戶。這是對您的快速測試,請查看他們的文檔並嘗試自己執行此操作。
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
如果您想了解更多該容器的構建方式,請查看Dockerfile。它使用Debian Wheezy,並使用bash命令構建容器。它從存儲庫中拉出,然後啟動mysqld。當您的容器從此圖像中
building時,它首次執行構建文件的命令。當使用>使用容器時,它將僅執行mysqld。 >現在我們擁有一個運行的mySQL容器,我們可以運行一個運行WordPress的容器。
構建WordPress容器>
>
那麼,我們如何將文件放入該文件夾中?默認情況下,該文件夾停留在容器中,並且是看不見的。但是,不要長時間(別忘了docker rm wordpress)。首先,創建一個文件夾並在其中導航(別忘了刪除舊的WordPress容器)。-v用於映射兩個文件夾。第一部分是OS上的文件夾,第二部分是容器文件系統中的文件夾。在類似Unix的系統上,“ $ PWD”返回命令運行時終端的位置。當您第一次啟動終端時,您將進入主目錄。 Windows上的等效物是CD。有關PWD的更多信息。
docker run --name wordpressdb -d mysql:5.7
>
>在您的瀏覽器中再次檢查。這次,您會注意到IP地址已更改,因為我們創建了一個新的容器。每當我們創建一個新容器時,都會更改其IP。如果您在瀏覽器中看到該消息,那麼您已經完成了所有操作。
>error: database is uninitialized and MYSQL_ROOT_PASSWORD not set Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
>
默認情況下,PHP映像沒有安裝MySQL擴展名,但是我們可以修復。這次,我們將通過Dockerfile構建一個容器。我們已經看到了Dockerfiles的工作原理。它們是由基本圖像構建的,進行一些處理,然後在最後執行一個命令。
創建一個名為dockerfile的新文件:docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
我們要使用php:5.6-apache Image。
接下來,我們需要像PHP映像一樣執行Apache2-Foreground(我們只需要安裝MySQL擴展程序)。
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
使用構建文件我們可以構建圖像。使用此圖像,我們構建了容器。
docker rm -f wordpressdb
-t用於給出存儲庫名稱。這 。告訴Docker Dockerfile在哪裡。由於Dockerfile位於工作目錄中。告訴docker它在工作目錄中。
>如果您使用Docker Images檢查圖像,現在您將看到帶有標籤最新圖像的新圖像(因為我們沒有為此圖像指定標籤)。現在,像我們使用php5.6-apache Image一樣構建使用此圖像的容器。
docker run --name wordpressdb -d mysql:5.7
>
>我們如何將WordPress與數據庫鏈接?首先,我們需要將WordPress容器與數據庫容器(WordPressDB)鏈接。這可以通過鏈接兩個容器來完成。有關鏈接的更多信息,請參見此處。
新參數是 - 鏈接。第一部分WordPressDB是我們要鏈接的容器的名稱,第二部分MySQL是別名。 Docker修改了WordPress容器的主機,並將WordPressDB的IP設置為MySQL。因此,當我們在WordPress配置上填寫數據庫的信息時,我們將將主機設置為“ mysql”。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
為什麼?這是因為運行Apache的用戶在文件系統上沒有寫入訪問。這是事情變得有些困難的地方。我們需要構建一個新版本的phpwithmysql映像。轉到您的Dockerfile並將其修改為這樣:
>>我們尚未創建entrypoint.sh文件,但是我們很快就會這樣做。複製Copies entrypoint.sh到容器內部 /內部。 CHMOD 777 /entrypoint.sh使該文件可執行。最後,入門點執行該文件。現在,在與DockerFile同一目錄中創建Entrypoint.sh文件。
另外,請刪除舊的wp-config.php文件。 上面的某些步驟似乎很神秘且複雜。這就是為什麼有許多不同框架和語言的官方圖像的原因。每個框架或語言的工作方式都有不同的規格。默認情況下,Docker不允許應用程序在文件系統上寫入。這是一件好事還是好事?我認為這是一件好事。我們可以創建僅保存文件的第三個容器。那裡的應用程序可以寫文件。這樣,我們將擁有一個更模塊化的體系結構。但是對於那些無法更改的框架(例如WordPress),有解決方法。 >我們要做的最後一件事是解決停止WordPress容器並重新開始時發生的問題。問題是WordPress將最後一個IP保存為其“家”和“站點” URL。停止WordPress容器並重新啟動。這次將有一個新的IP。如果您在瀏覽器中嘗試使用,則會看到圖像,CSS和JavaScript文件未正確包含。該解決方案很簡單,只需通過添加以下行來修改wp-config.php
在本系列的下一篇文章中,向您展示瞭如何使用官方WordPress映像,我們還將學習如何使用Docker構成使事情變得更加容易的。 >如果有更簡單的方法,為什麼要寫這篇文章呢?從本質上講,這是為了更好地了解Docker的工作原理,要做到這一點,您必須對基本的複雜性弄髒手。這更多是個人規則,因此,當我明天使用Docker時,我會更多地了解它的工作原理以及如何根據我的需求進行調整。希望您現在也對Docker在幕後工作的工作有了更深入的了解。請繼續關注本系列中的第三篇文章,我們將與Docker和WordPress一起玩更多樂趣。
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
docker rm -f wordpressdb
docker run --name wordpress php:5.6-apache
最終調整
docker run --name wordpressdb -d mysql:5.7
在本文中,我們介紹瞭如何為WordPress構建容器。我們以一種相當神秘的方式做到了這一點,長長的命令可能很難記住。應該有一種更簡單的方法,並且有! Docker團隊構建了一個WordPress映像,您可以在幾分鐘內輕鬆設置該圖像。畢竟,誰想記住每個設置WordPress的命令?
>常見問題(常見問題解答)有關WordPress構建Docker容器的問題
>如何確保我的WordPress的Docker容器是安全的?為了確保您的容器安全,請始終使用最新版本的Docker和WordPress。定期更新您的Docker圖像和容器,以包括最新的安全補丁。另外,使用Docker Secrets管理密碼等敏感數據。避免運行Docker容器作為根,以最大程度地減少容器的損害。最後,使用Docker安全掃描工具來識別和修復圖像中的漏洞。 我如何優化docker容器的性能,用於WordPress?
備份您WordPress站點在Docker容器中運行,您可以使用“ Docker CP”命令將文件從容器複製到主機計算機。您也可以使用Docker量來持久數據。如果您使用的是mySQL數據庫,則可以使用“ mySqlDump”命令來創建數據庫的備份。
>如何自動化Docker Containser中的WordPress網站的部署?您可以使用CI/CD工具(例如Jenkins,Travis CI或GitHub操作)自動在Docker容器中部署WordPress網站。這些工具可以構建您的Docker映像,運行測試並將容器部署到Docker主機或Kubernetes群集。
>
>要更新在Docker容器中運行的WordPress站點,您可以從Docker Hub中摘取最新的WordPress映像,停止運行的容器,並使用更新的圖像啟動新的。請記住在更新之前要備份數據。 >如何監視在Docker容器中運行的WordPress站點? docker提供了幾種用於監視容器的工具。您可以使用“ Docker Stats”命令來監視容器的資源使用情況。您還可以使用Prometheus和Grafana之類的工具從容器中收集和可視化指標。 >我如何將現有的WordPress網站遷移到Docker容器?以上是如何為WordPress手動構建Docker容器的詳細內容。更多資訊請關注PHP中文網其他相關文章!