戰(zhàn)流程)
示例工程【免費(fèi)下載鏈接】awesome-composeAwesome Docker Compose samples項(xiàng)目地址https://gitcode.com/gh_mirrors/aw/awesome-compose點(diǎn)擊查看免費(fèi)下載本篇技術(shù)指南基于 awesome-compose 倉庫的官方文檔示例official-documentation-samples/wordpress/README.md完整講解如何用 Docker Compose 在隔離的容器環(huán)境中一鍵拉起 WordPress 博客與獨(dú)立數(shù)據(jù)庫實(shí)例。你將掌握docker-compose.yml的逐項(xiàng)配置含義、數(shù)據(jù)持久化卷的用法、docker compose up -d/down的完整生命周期操作以及部署后如何完成 WordPress 著名的五分鐘安裝最終得到一個(gè)可復(fù)用、可運(yùn)行的 WordPress 起步項(xiàng)目。前置條件開始之前請(qǐng)確認(rèn)本機(jī)已經(jīng)安裝好 Docker Compose。本指南假定 Compose 已可用后續(xù)所有命令均在項(xiàng)目目錄內(nèi)執(zhí)行。定義項(xiàng)目目錄結(jié)構(gòu)與 compose 文件1. 創(chuàng)建空的項(xiàng)目目錄首先創(chuàng)建一個(gè)空的目錄作為項(xiàng)目根目錄例如my_wordpress。該目錄同時(shí)是應(yīng)用鏡像的構(gòu)建上下文目錄內(nèi)只應(yīng)放置與該鏡像構(gòu)建相關(guān)的資源。$ mkdir my_wordpress $ cd my_wordpress/提示Compose 文件名使用.yml或.yaml擴(kuò)展名均可正常工作。官方文檔示例使用docker-compose.yml本倉庫內(nèi)的示例則統(tǒng)一采用compose.yaml兩種命名都是 Compose 規(guī)范認(rèn)可的。2. 編寫docker-compose.yml在項(xiàng)目目錄中創(chuàng)建docker-compose.yml內(nèi)容定義了WordPress博客服務(wù)與一個(gè)獨(dú)立的MySQL/MariaDB數(shù)據(jù)庫服務(wù)并通過命名卷named volume實(shí)現(xiàn)數(shù)據(jù)持久化。官方文檔給出的完整起步配置如下services: db: # We use a mariadb image which supports both amd64 arm64 architecture image: mariadb:10.6.4-focal # If you really want to use MySQL, uncomment the following line #image: mysql:8.0.27 command: --default-authentication-pluginmysql_native_password volumes: - db_data:/var/lib/mysql restart: always environment: - MYSQL_ROOT_PASSWORDsomewordpress - MYSQL_DATABASEwordpress - MYSQL_USERwordpress - MYSQL_PASSWORDwordpress expose: - 3306 - 33060 wordpress: image: wordpress:latest volumes: - wp_data:/var/www/html ports: - 80:80 restart: always environment: - WORDPRESS_DB_HOSTdb - WORDPRESS_DB_USERwordpress - WORDPRESS_DB_PASSWORDwordpress - WORDPRESS_DB_NAMEwordpress volumes: db_data: wp_data:這份文件是自包含的起步項(xiàng)目不依賴外部構(gòu)建上下文直接拉取鏡像即可運(yùn)行。下面逐段拆解每一部分的作用。compose 配置逐項(xiàng)拆解db 服務(wù)數(shù)據(jù)庫容器db: image: mariadb:10.6.4-focal command: --default-authentication-pluginmysql_native_password volumes: - db_data:/var/lib/mysql restart: always environment: - MYSQL_ROOT_PASSWORDsomewordpress - MYSQL_DATABASEwordpress - MYSQL_USERwordpress - MYSQL_PASSWORDwordpress expose: - 3306 - 33060配置項(xiàng)說明image: mariadb:10.6.4-focal使用 MariaDB 鏡像而非 MySQL原因是該鏡像同時(shí)支持 amd64 與 arm64 兩種 CPU 架構(gòu)能保證在 Apple Silicon 等 ARM 主機(jī)上順利運(yùn)行。如果你確實(shí)想用 MySQL可取消#image: mysql:8.0.27一行的注釋切換command: --default-authentication-pluginmysql_native_password指定默認(rèn)認(rèn)證插件為mysql_native_password用于兼容 WordPress 客戶端與數(shù)據(jù)庫之間的認(rèn)證握手舊版認(rèn)證協(xié)議volumes: - db_data:/var/lib/mysql將命名卷db_data掛載到容器內(nèi)數(shù)據(jù)庫數(shù)據(jù)目錄/var/lib/mysql實(shí)現(xiàn)數(shù)據(jù)庫文件的持久化restart: always容器異常退出或 Docker 守護(hù)進(jìn)程重啟后自動(dòng)拉起保證服務(wù)可用性environment:容器首次啟動(dòng)時(shí)自動(dòng)完成數(shù)據(jù)庫初始化創(chuàng)建名為wordpress的數(shù)據(jù)庫以及用戶wordpress密碼wordpress同時(shí)設(shè)置 root 密碼somewordpressexpose: - 3306 - 33060僅將端口暴露給 Compose 內(nèi)部網(wǎng)絡(luò)不映射到宿主機(jī)端口外部無法直接訪問數(shù)據(jù)庫wordpress 服務(wù)博客容器wordpress: image: wordpress:latest volumes: - wp_data:/var/www/html ports: - 80:80 restart: always environment: - WORDPRESS_DB_HOSTdb - WORDPRESS_DB_USERwordpress - WORDPRESS_DB_PASSWORDwordpress - WORDPRESS_DB_NAMEwordpress配置項(xiàng)說明image: wordpress:latest使用官方 WordPress 鏡像的最新標(biāo)簽volumes: - wp_data:/var/www/html將命名卷wp_data掛載到 WordPress 的 Web 根目錄/var/www/html。該卷持久化 WordPress 對(duì)數(shù)據(jù)庫的更新、已安裝的主題與插件以及上傳的媒體文件ports: - 80:80將容器內(nèi) 80 端口映射到宿主機(jī) 80 端口瀏覽器通過宿主機(jī)地址直接訪問站點(diǎn)environment:通過WORDPRESS_DB_*系列環(huán)境變量向 WordPress 告知數(shù)據(jù)庫連接信息WORDPRESS_DB_HOSTdb指向同一 Compose 網(wǎng)絡(luò)內(nèi)的db服務(wù)名Compose 內(nèi)置 DNS 會(huì)解析該服務(wù)名用戶名、密碼、庫名均與db服務(wù)中MYSQL_*創(chuàng)建的值一一對(duì)應(yīng)命名卷聲明volumes: db_data: wp_data:兩個(gè)命名卷db_data與wp_data在頂層顯式聲明。docker compose down默認(rèn)會(huì)保留它們從而在容器重建后依然保留數(shù)據(jù)庫與站點(diǎn)文件只有顯式刪除卷--volumes/-v才會(huì)清空數(shù)據(jù)。注意WordPress Multisite多站點(diǎn)僅在端口80和443上工作。如果你把ports中的宿主機(jī)端口改成其他值多站點(diǎn)功能將無法正常工作。構(gòu)建并啟動(dòng)項(xiàng)目在項(xiàng)目目錄中執(zhí)行以下命令啟動(dòng)整套環(huán)境$ docker compose up -d-ddetached表示后臺(tái)運(yùn)行。該命令會(huì)完成三件事拉取所需的 Docker 鏡像、創(chuàng)建默認(rèn)網(wǎng)絡(luò)與命名卷、啟動(dòng) wordpress 與數(shù)據(jù)庫兩個(gè)容器。實(shí)際執(zhí)行時(shí)輸出大致如下$ docker compose up -d Creating network my_wordpress_default with the default driver Pulling db (mysql:5.7)... 5.7: Pulling from library/mysql efd26ecc9548: Pull complete a3ed95caeb02: Pull complete ... Digest: sha256:34a0aca88e85f2efa5edff1cea77cf5d3147ad93545dbec99cfe705b03c520de Status: Downloaded newer image for mysql:5.7 Pulling wordpress (wordpress:latest)... latest: Pulling from library/wordpress efd26ecc9548: Already exists a3ed95caeb02: Pull complete 589a9d9a7c64: Pull complete ... Digest: sha256:ed28506ae44d5def89075fd5c01456610cd6c64006addfe5210b8c675881aff6 Status: Downloaded newer image for wordpress:latest Creating my_wordpress_db_1 Creating my_wordpress_wordpress_1注意如果報(bào)錯(cuò)信息顯示無法綁定0.0.0.0到端口80或443通常說明該端口已被其他服務(wù)占用。Multisite 只能在 80/443 端口運(yùn)行因此遇到端口沖突時(shí)需要先釋放相應(yīng)端口而不是隨意修改映射。驗(yàn)證容器與端口映射啟動(dòng)完成后可用docker ps核對(duì)容器狀態(tài)與端口映射。本倉庫的 wordpress-mysql/README.md 給出了對(duì)應(yīng)的驗(yàn)證示例$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5fbb4181a069 wordpress:latest docker-entrypoint.s… 35 seconds ago Up 34 seconds 0.0.0.0:80-80/tcp wordpress-mysql_wordpress_1 e0884a8d444d mysql:8.0.19 docker-entrypoint.s… 35 seconds ago Up 34 seconds 3306/tcp, 33060/tcp wordpress-mysql_db_1可以看到 WordPress 容器將宿主機(jī) 80 端口映射到容器內(nèi) 80 端口而數(shù)據(jù)庫容器僅以內(nèi)部端口形式暴露3306/tcp, 33060/tcp無0.0.0.0:...-映射外部網(wǎng)絡(luò)無法直接觸達(dá)數(shù)據(jù)庫——這正是expose與ports兩種聲明方式的效果差異。在瀏覽器中完成 WordPress 安裝啟動(dòng)后WordPress 會(huì)運(yùn)行在 Docker 主機(jī)的80端口上。若使用 Docker Desktop for Mac / Windows可直接訪問http://localhost:80打開站點(diǎn)。注意容器剛啟動(dòng)時(shí)站點(diǎn)并非立即可用首次初始化可能需等待一兩分鐘請(qǐng)耐心等待第一個(gè)頁面加載完成。首次訪問會(huì)進(jìn)入 WordPress 自帶的五分鐘安裝向?qū)А5谝徊绞沁x擇安裝語言選定語言并點(diǎn)擊 Continue 后進(jìn)入站點(diǎn)信息設(shè)置頁面需要填寫站點(diǎn)標(biāo)題、管理員用戶名、密碼與郵箱并可選擇是否允許搜索引擎索引站點(diǎn)填寫完畢后點(diǎn)擊 Install WordPress即可完成安裝并以管理員身份登錄后臺(tái)。此時(shí)數(shù)據(jù)庫連接信息已由WORDPRESS_DB_*環(huán)境變量自動(dòng)配置好安裝過程無需手動(dòng)填寫數(shù)據(jù)庫參數(shù)。關(guān)閉與清理停止并保留數(shù)據(jù)$ docker compose downdocker compose down會(huì)移除容器與默認(rèn)網(wǎng)絡(luò)但保留db_data與wp_data兩個(gè)命名卷因此你的 WordPress 數(shù)據(jù)庫、主題與插件數(shù)據(jù)依然存在下次up -d后站點(diǎn)數(shù)據(jù)完整恢復(fù)。停止并刪除全部數(shù)據(jù)$ docker compose down --volumesdocker compose down --volumes除移除容器與默認(rèn)網(wǎng)絡(luò)外還會(huì)刪除 WordPress 數(shù)據(jù)庫即刪除命名卷中的數(shù)據(jù)。本倉庫的 wordpress-mysql/README.md 使用等價(jià)的-v參數(shù)$ docker compose down -v需要徹底重置環(huán)境時(shí)使用該命令。深入?yún)⒖紓}庫內(nèi)的 WordPress 生產(chǎn)化示例官方文檔示例末尾指向了本倉庫中更完整的實(shí)戰(zhàn)樣本 wordpress-mysql/README.md其對(duì)應(yīng)的 compose.yaml 與本文配置在核心思路上完全一致可作為繼續(xù)深入的參照架構(gòu)兼容性為兼容 AMD64 與 ARM64 兩種架構(gòu)倉庫示例默認(rèn)使用mariadb:10.6.4-focal如需使用 MySQL取消注釋#image: mysql:8.0.27即可與官方文檔示例的策略完全相同數(shù)據(jù)持久化db_data卷掛載于/var/lib/mysql持久化數(shù)據(jù)庫文件保證down后數(shù)據(jù)不丟失生命周期docker compose up -d部署、docker compose down停止、docker compose down -v連帶刪除全部 WordPress 數(shù)據(jù)。倉庫中還包含其他 Compose 快速上手樣本可作橫向參考官方文檔示例目錄 official-documentation-samples/README.md 收錄了 Djangodjango/README.md與 Railsrails/README.md兩個(gè)同系列快速入門分別演示 Compose 編排 PostgreSQL 后端應(yīng)用的完整套路有助于理解應(yīng)用服務(wù) 數(shù)據(jù)服務(wù)這一 Compose 通用編排模式。小結(jié)通過本文的docker-compose.yml你已能用一條docker compose up -d命令獲得一套完整的 WordPress 站點(diǎn)mariadb容器承載數(shù)據(jù)庫并借助命名卷持久化數(shù)據(jù)wordpress容器承載站點(diǎn)文件并映射 80 端口對(duì)外服務(wù)down保留數(shù)據(jù)、down --volumes徹底清理。這套配置既是官方文檔推薦的起步模板也與倉庫內(nèi) wordpress-mysql/compose.yaml 的生產(chǎn)化樣本保持一致可直接復(fù)制到自己的項(xiàng)目中使用。贊分享示例工程【免費(fèi)下載鏈接】awesome-composeAwesome Docker Compose samples項(xiàng)目地址https://gitcode.com/gh_mirrors/aw/awesome-compose點(diǎn)擊查看免費(fèi)下載相關(guān)推薦gpt-researcher Docker 快速部署指南docker-compose 與 Docker CLI 完整實(shí)戰(zhàn)gpt researcher Docker 快速部署指南docker compose 與 Docker CLI 完整實(shí)戰(zhàn) 本文圍繞 gpt researche人工智能AI 應(yīng)用深度研究AI Agent自主智能體RAG多智能體后端biliTickerBuy Docker 部署實(shí)戰(zhàn)從 docker run 到 docker compose 的完整配置指南biliTickerBuy Docker 部署實(shí)戰(zhàn)從 docker run 到 docker compose 的完整配置指南 本文圍繞 biliTickerB電商RPAPicoClaw Docker 部署與快速上手指南Compose 三種模式與配置詳解PicoClaw Docker 部署與快速上手指南Compose 三種模式與配置詳解 本文基于倉庫文檔 docs/guides/docker.pt br.md人工智能AI 應(yīng)用AI Agent交互助手工具調(diào)用MCP ClientsAgent 記憶上一篇IoT-For-Beginners 實(shí)戰(zhàn)用繼電器與 MQTT 構(gòu)建響應(yīng)土壤濕度的自動(dòng)植物澆水系統(tǒng)下一篇Polar 前端性能優(yōu)化規(guī)避 Barrel 文件導(dǎo)入砍掉 React/Next.js 數(shù)百毫秒模塊加載與冷啟動(dòng)開銷創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考