如何為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容器的名稱作為第一部分,而別名作為第二部分。
- 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=... ?
如果您現在檢查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容器
>
>沒有-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
>
>在您的瀏覽器中再次檢查。這次,您會注意到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容器中運行的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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

最近,我們向您展示瞭如何通過允許用戶將自己喜歡的帖子保存在個性化庫中來為用戶創建個性化體驗。您可以通過在某些地方(即歡迎屏幕)使用他們的名字,將個性化結果提升到另一個水平。幸運的是,WordPress使獲取登錄用戶的信息變得非常容易。在本文中,我們將向您展示如何檢索與當前登錄用戶相關的信息。我們將利用get_currentuserinfo(); 功能。這可以在主題中的任何地方使用(頁眉、頁腳、側邊欄、頁面模板等)。為了使其工作,用戶必須登錄。因此我們需要使用

有四種方法可以調整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

博客是人們在網上表達觀點、意見和見解的理想平台。許多新手渴望建立自己的網站,卻因擔心技術障礙或成本問題而猶豫不決。然而,隨著平台不斷發展以滿足初學者的能力和需求,現在開始變得比以往任何時候都更容易。 本文將逐步指導您如何建立一個WordPress博客,從主題選擇到使用插件提升安全性和性能,助您輕鬆創建自己的網站。 選擇博客主題和方向 在購買域名或註冊主機之前,最好先確定您計劃涵蓋的主題。個人網站可以圍繞旅行、烹飪、產品評論、音樂或任何激發您興趣的愛好展開。專注於您真正感興趣的領域可以鼓勵持續寫作

您想了解如何在父分類存檔頁面上顯示子分類嗎?在自定義分類存檔頁面時,您可能需要執行此操作,以使其對訪問者更有用。在本文中,我們將向您展示如何在父分類存檔頁面上輕鬆顯示子分類。為什麼在父分類存檔頁面上顯示子分類?通過在父分類存檔頁面上顯示所有子分類,您可以使其不那麼通用,對訪問者更有用。例如,如果您運行一個關於書籍的WordPress博客,並且有一個名為“主題”的分類法,那麼您可以添加“小說”、“非小說”等子分類法,以便您的讀者可以

過去,我們分享過如何使用PostExpirator插件使WordPress中的帖子過期。好吧,在創建活動列表網站時,我們發現這個插件非常有用。我們可以輕鬆刪除過期的活動列表。其次,多虧了這個插件,按帖子過期日期對帖子進行排序也非常容易。在本文中,我們將向您展示如何在WordPress中按帖子過期日期對帖子進行排序。更新了代碼以反映插件中更改自定義字段名稱的更改。感謝Tajim在評論中讓我們知道。在我們的特定項目中,我們將事件作為自定義帖子類型。現在

要使用 WordPress 主機建站,需要:選擇一個可靠的主機提供商。購買一個域名。設置 WordPress 主機帳戶。選擇一個主題。添加頁面和文章。安裝插件。自定義您的網站。發布您的網站。

您是否正在尋找自動化 WordPress 網站和社交媒體帳戶的方法? 通過自動化,您將能夠在 Facebook、Twitter、LinkedIn、Instagram 等平台上自動分享您的 WordPress 博客文章或更新。 在本文中,我們將向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 輕鬆實現 WordPress 和社交媒體的自動化。 為什麼要自動化 WordPress 和社交媒體? 自動化您的WordPre

導入 WordPress 源碼需要以下步驟:創建子主題以進行主題修改。導入源碼,覆蓋子主題中的文件。激活子主題,使其生效。測試更改,確保一切正常。
