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