搜尋
首頁CMS教程&#&按如何為WordPress手動構建Docker容器

如何為WordPress手動構建Docker容器

>在我的上一篇文章中,我們介紹了什麼是docker以及如何使用幾個命令啟動和運行。但是,我們還沒有做任何有用的事情。有很多方法可以使用Docker獲得WordPress環境,在本文中,我將向您展示如何手動設置Docker容器與WordPress一起使用。如果您想快速介紹Docker,可以跳回這裡的第一篇文章。

鑰匙要點

可以手動設置Docker,通過為MySQL和WordPress創建容器來與WordPress一起工作。 MySQL容器是使用Docker Hub的MySQL映像創建的,而WordPress容器是由PHP映像構建的。
    > MySQL容器需要首次創建時通過環境變量,為根用戶設置密碼。還可以將其他環境變量傳遞給容器,例如mysql_database,以確保創建帶有該名稱的數據庫。 WordPress容器的PHP映像默認情況下沒有安裝的MySQL擴展名。可以通過通過使用PHP:5.6-apache image的Dockerfile構建容器來解決這一問題,安裝mysqli擴展名並執行Apache2-Foreground。
  • > WordPress容器需要與MySQL容器鏈接到數據庫以進行功能。這是通過運行WordPress容器時使用–link參數的,將MySQL容器的名稱作為第一部分,而別名作為第二部分。
  • 設置mySQL
  • >每個WordPress安裝都需要一個MySQL數據庫。為此,我們前往Docker Hub並找到MySQL圖像。
  • docker團隊已經準備好了MySQL映像供我們使用。在終端上運行任何命令之前,請確保讀取此圖像的文檔。寫作時的最新版本為5.7。但是,最新的標籤名稱為5.6。圖像的最新版本可以適用於任何以前的版本,但一個處於穩定狀態。
  • 使用此圖像設置容器的基本命令是:
  • >

>如果您還沒有本地圖像的副本,Docker將從Docker Hub中將其拉動。到目前為止,我們知道 - 名稱給我們的容器一個名稱,-d確保我們的容器在後台運行。

>

如果您運行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=... ?
> -e mysql_root_password =密碼是環境變量。當從圖像構建容器時,它讀取此變量並將根用戶的密碼設置為指定的值,在這種情況下,該值是密碼。

如果您現在檢查Docker記錄WordPressDB,則會看到一條很長的消息,但不用擔心,它可以正常工作。同樣,運行Docker PS,您會看到一個具有活性和運行的名稱WordPressDB的容器。

>

>您也可以將其他環境變量傳遞給容器,您可以在MySQL映像文檔上找到完整的列表。這是另一個示例:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
>如果您嘗試使用名稱WordPressDB刪除上一個容器,則可能會失敗。那是因為容器仍在後台運行。您可以首先停止運行的容器,然後將其卸下或強制將其刪除:

如果我們使用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容器如何為WordPress手動構建Docker容器 對於此容器,我們將使用PHP圖像。 PHP圖像有三種類型,我們只需要Apache隨附的PHP圖像。

>

>沒有-d選項,它不會在後台運行,而是會向您顯示容器正在輸出的所有內容(就像Docker logs [Container_Name]一樣)。從輸出中,您可以看到它已將IP自動分配給該容器。就我而言,是172.17.0.35。如果您使用瀏覽器訪問此地址,則會遇到禁止錯誤。這是為什麼?這是因為/var/www/html文件夾中沒有什麼(在容器文件系統上),它是空的。

>

那麼,我們如何將文件放入該文件夾中?默認情況下,該文件夾停留在容器中,並且是看不見的。但是,不要長時間(別忘了docker rm wordpress)。首先,創建一個文件夾並在其中導航(別忘了刪除舊的WordPress容器)。

-v用於映射兩個文件夾。第一部分是OS上的文件夾,第二部分是容器文件系統中的文件夾。在類似Unix的系統上,“ $ PWD”返回命令運行時終端的位置。當您第一次啟動終端時,您將進入主目錄。 Windows上的等效物是CD。有關PWD的更多信息。
docker run --name wordpressdb -d mysql:5.7
> 因此,在我們的示例中,第一部分是“ $ pwd/”,它是本地目錄,第二部分是/var/www/html/。 -v都需要兩者都是完整的路徑。但是,如果我們查看工作目錄,我們可以看到那裡不存在文件。創建一個稱為index.php的文件,其中包含以下內容:

>

>在您的瀏覽器中再次檢查。這次,您會注意到IP地址已更改,因為我們創建了一個新的容器。每當我們創建一個新容器時,都會更改其IP。如果您在瀏覽器中看到該消息,那麼您已經完成了所有操作。

>
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
>讓我們看看如果將WordPress文件放在那裡,會發生什麼。使用Docker Stop WordPress停止容器。從WordPress.org獲取WordPress的最新副本,然後將文件放入項目文件夾中。使用Docker Start WordPress再次啟動容器。另外,請注意,您最初需要使文件可讀。您可以在 *NIX系統上運行CHMOD -R 777 ProjectFolter。如果您重新加載頁面,您的瀏覽器會告訴您:

>

默認情況下,PHP映像沒有安裝MySQL擴展名,但是我們可以修復。這次,我們將通過Dockerfile構建一個容器。我們已經看到了Dockerfiles的工作原理。它們是由基本圖像構建的,進行一些處理,然後在最後執行一個命令。

創建一個名為dockerfile的新文件:
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7

我們要使用php:5.6-apache Image。

然後,我們將安裝mysqli擴展名。

接下來,我們需要像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
>檢查您的瀏覽器中的容器IP,您會看到類似的東西:

>

如何為WordPress手動構建Docker容器如果您走了這麼遠,那麼您已經做對了。現在,我們必須將WordPress與數據庫鏈接。這遠離著名的5分鐘WordPress安裝和更複雜的安裝,但是從長遠來看,您會看到Docker的好處。

>我們如何將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=... ?
現在,使用容器的IP(新IP)轉到瀏覽器。填寫數據庫的信息,然後登錄到管理員面板。如果您嘗試安裝一個新主題(將嘗試在文件系統上進行更改),您將看到類似的內容:

為什麼?這是因為運行Apache的用戶在文件系統上沒有寫入訪問。這是事情變得有些困難的地方。我們需要構建一個新版本的phpwithmysql映像。轉到您的Dockerfile並將其修改為這樣:

> 如何為WordPress手動構建Docker容器

>我們尚未創建entrypoint.sh文件,但是我們很快就會這樣做。複製Copies entrypoint.sh到容器內部 /內部。 CHMOD 777 /entrypoint.sh使該文件可執行。最後,入門點執行該文件。現在,在與DockerFile同一目錄中創建Entrypoint.sh文件。

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
這是官方WordPress映像的簡化解決方法,但將確保我們對容器文件系統進行寫入訪問。我們現在可以構建新圖像:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
>確保卸下舊容器並創建新容器:>

docker rm -f wordpressdb

另外,請刪除舊的wp-config.php文件。

>
docker run --name wordpress php:5.6-apache
現在,檢查瀏覽器中的WordPress容器的IP。這次,您可以安裝主題和插件,並在容器文件系統上進行更改。

上面的某些步驟似乎很神秘且複雜。這就是為什麼有許多不同框架和語言的官方圖像的原因。每個框架或語言的工作方式都有不同的規格。默認情況下,Docker不允許應用程序在文件系統上寫入。這是一件好事還是好事?我認為這是一件好事。我們可以創建僅保存文件的第三個容器。那裡的應用程序可以寫文件。這樣,我們將擁有一個更模塊化的體系結構。但是對於那些無法更改的框架(例如WordPress),有解決方法。

>

最終調整

>我們要做的最後一件事是解決停止WordPress容器並重新開始時發生的問題。問題是WordPress將最後一個IP保存為其“家”和“站點” URL。停止WordPress容器並重新啟動。這次將有一個新的IP。如果您在瀏覽器中嘗試使用,則會看到圖像,CSS和JavaScript文件未正確包含。該解決方案很簡單,只需通過添加以下行來修改wp-config.php

docker run --name wordpressdb -d mysql:5.7
請注意,如果您在wp-config.php文件中定義了這些值,則在一般設置中以後無法更改它們。

結論

在本文中,我們介紹瞭如何為WordPress構建容器。我們以一種相當神秘的方式做到了這一點,長長的命令可能很難記住。應該有一種更簡單的方法,並且有! Docker團隊構建了一個WordPress映像,您可以在幾分鐘內輕鬆設置該圖像。畢竟,誰想記住每個設置WordPress的命令?

在本系列的下一篇文章中,向您展示瞭如何使用官方WordPress映像,我們還將學習如何使用Docker構成使事情變得更加容易的。

>

>如果有更簡單的方法,為什麼要寫這篇文章呢?從本質上講,這是為了更好地了解Docker的工作原理,要做到這一點,您必須對基本的複雜性弄髒手。這更多是個人規則,因此,當我明天使用Docker時,我會更多地了解它的工作原理以及如何根據我的需求進行調整。希望您現在也對Docker在幕後工作的工作有了更深入的了解。請繼續關注本系列中的第三篇文章,我們將與Docker和WordPress一起玩更多樂趣。

> 到目前為止,您對Docker有何看法?您會在下一個項目中考慮嗎?在下面的評論中讓我知道。

>常見問題(常見問題解答)有關WordPress構建Docker容器的問題

>如何確保我的WordPress的Docker容器是安全的?為了確保您的容器安全,請始終使用最新版本的Docker和WordPress。定期更新您的Docker圖像和容器,以包括最新的安全補丁。另外,使用Docker Secrets管理密碼等敏感數據。避免運行Docker容器作為根,以最大程度地減少容器的損害。最後,使用Docker安全掃描工具來識別和修復圖像中的漏洞。

我如何優化docker容器的性能,用於WordPress?

如何將docker容器的問題排除到WordPress? 🎜> Docker提供了多種故障排除的工具。使用“ Docker Logs”命令查看運行容器的日誌。如果您的容器崩潰,請使用“ Docker Inspect”命令獲取有關容器的更多信息。您還可以使用“ Docker Stats”命令來監視您的容器的資源使用情況。如果您面臨網絡問題,請使用“ Docker Network Inspect”命令來檢查您的Docker網絡。

>如何備份在Docker容器中運行的WordPress網站?

備份您WordPress站點在Docker容器中運行,您可以使用“ Docker CP”命令將文件從容器複製到主機計算機。您也可以使用Docker量來持久數據。如果您使用的是mySQL數據庫,則可以使用“ mySqlDump”命令來創建數據庫的備份。

>

>如何縮放在Docker容器中運行的WordPress站點?提供了一些用於擴展應用程序的工具。您可以使用Docker組合來定義和運行多容器應用程序,並通過增加容器實例的數量來擴展它們。您還可以使用Docker Swarm或Kubernetes,它們是可以在多個主機上管理和擴展容器的編排工具。

如何自動化Docker Containser中的WordPress網站的部署?您可以使用CI/CD工具(例如Jenkins,Travis CI或GitHub操作)自動在Docker容器中部署WordPress網站。這些工具可以構建您的Docker映像,運行測試並將容器部署到Docker主機或Kubernetes群集。

>如何管理Docker容器中的多個WordPress站點?

>

在Docker容器中管理多個WordPress站點,您可以使用Docker組合將每個站點定義為單獨的服務。您還可以使用Docker網絡來隔離每個站點的網絡流量。如果您使用的是nginx之類的反向代理,則可以將其配置為基於域名的流量將流量路由到適當的容器。

如何更新在docker容器中運行的WordPress站點?

>

>要更新在Docker容器中運行的WordPress站點,您可以從Docker Hub中摘取最新的WordPress映像,停止運行的容器,並使用更新的圖像啟動新的。請記住在更新之前要備份數據。

>如何監視在Docker容器中運行的WordPress站點?

docker提供了幾種用於監視容器的工具。您可以使用“ Docker Stats”命令來監視容器的資源使用情況。您還可以使用Prometheus和Grafana之類的工具從容器中收集和可視化指標。

>我如何將現有的WordPress網站遷移到Docker容器? >

以上是如何為WordPress手動構建Docker容器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
我可以在3天內學習WordPress嗎?我可以在3天內學習WordPress嗎?Apr 09, 2025 am 12:16 AM

能在三天內學會WordPress。 1.掌握基礎知識,如主題、插件等。 2.理解核心功能,包括安裝和工作原理。 3.通過示例學習基本和高級用法。 4.了解調試技巧和性能優化建議。

WordPress是CMS嗎?WordPress是CMS嗎?Apr 08, 2025 am 12:02 AM

WordPress是內容管理系統(CMS)。它提供內容管理、用戶管理、主題和插件功能,支持創建和管理網站內容。其工作原理包括數據庫管理、模板系統和插件架構,適用於從博客到企業網站的各種需求。

WordPress有什麼用?WordPress有什麼用?Apr 07, 2025 am 12:06 AM

wordpressgood forvortalyanewebprojectDuetoItsAsatilityAsacms.itexcelsin:1)用戶友好性,允許Aeserywebsitesetup; 2)sexibility andcustomized andcustomization and numerthemesandplugins; 3)seoop timigimization; and4)and4)

我應該使用Wix或WordPress嗎?我應該使用Wix或WordPress嗎?Apr 06, 2025 am 12:11 AM

Wix適合沒有編程經驗的用戶,WordPress適合希望有更多控制和擴展能力的用戶。 1)Wix提供拖放式編輯器和豐富模板,易於快速搭建網站。 2)WordPress作為開源CMS,擁有龐大社區和插件生態,支持深度自定義和擴展。

WordPress的成本是多少?WordPress的成本是多少?Apr 05, 2025 am 12:13 AM

WordPress本身免費,但使用需額外費用:1.WordPress.com提供從免費到付費的套餐,價格從每月幾美元到幾十美元不等;2.WordPress.org需購買域名(每年10-20美元)和託管服務(每月5-50美元);3.插件和主題多數免費,付費的價格在幾十到幾百美元之間;通過選擇合適的託管服務、合理使用插件和主題、定期維護和優化,可以有效控制和優化WordPress的成本。

WordPress仍然免費嗎?WordPress仍然免費嗎?Apr 04, 2025 am 12:06 AM

WordPress核心版本是免費的,但使用過程中可能產生其他費用。 1.域名和託管服務需要付費。 2.高級主題和插件可能需要付費。 3.專業服務和高級功能可能需要付費。

對於初學者來說,WordPress容易嗎?對於初學者來說,WordPress容易嗎?Apr 03, 2025 am 12:02 AM

WordPress對初學者來說容易上手。 1.登錄後台後,用戶界面直觀,簡潔的儀表板提供所有必要功能鏈接。 2.基本操作包括創建和編輯內容,所見即所得的編輯器簡化了內容創建。 3.初學者可以通過插件和主題擴展網站功能,學習曲線存在但可以通過實踐掌握。

為什麼有人會使用WordPress?為什麼有人會使用WordPress?Apr 02, 2025 pm 02:57 PM

人們選擇使用WordPress是因為其強大和靈活性。 1)WordPress是一個開源的CMS,易用性和可擴展性強,適合各種網站需求。 2)它有豐富的主題和插件,生態系統龐大,社區支持強大。 3)WordPress的工作原理基於主題、插件和核心功能,使用PHP和MySQL處理數據,支持性能優化。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具