ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Docker Compose 快速部署 WordPress:compose 配置详解与完整实战流程

Docker Compose 快速部署 WordPress:compose 配置详解与完整实战流程 示例工程【免费下载链接】awesome-composeAwesome Docker Compose samples项目地址https://gitcode.com/gh_mirrors/aw/awesome-compose点击查看免费下载本篇技术指南基于 awesome-compose 仓库的官方文档示例official-documentation-samples/wordpress/README.md完整讲解如何用 Docker Compose 在隔离的容器环境中一键拉起 WordPress 博客与独立数据库实例。你将掌握docker-compose.yml的逐项配置含义、数据持久化卷的用法、docker compose up -d/down的完整生命周期操作以及部署后如何完成 WordPress 著名的五分钟安装最终得到一个可复用、可运行的 WordPress 起步项目。前置条件开始之前请确认本机已经安装好 Docker Compose。本指南假定 Compose 已可用后续所有命令均在项目目录内执行。定义项目目录结构与 compose 文件1. 创建空的项目目录首先创建一个空的目录作为项目根目录例如my_wordpress。该目录同时是应用镜像的构建上下文目录内只应放置与该镜像构建相关的资源。$ mkdir my_wordpress $ cd my_wordpress/提示Compose 文件名使用.yml或.yaml扩展名均可正常工作。官方文档示例使用docker-compose.yml本仓库内的示例则统一采用compose.yaml两种命名都是 Compose 规范认可的。2. 编写docker-compose.yml在项目目录中创建docker-compose.yml内容定义了WordPress博客服务与一个独立的MySQL/MariaDB数据库服务并通过命名卷named volume实现数据持久化。官方文档给出的完整起步配置如下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 服务数据库容器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 客户端与数据库之间的认证握手旧版认证协议volumes: - db_data:/var/lib/mysql将命名卷db_data挂载到容器内数据库数据目录/var/lib/mysql实现数据库文件的持久化restart: always容器异常退出或 Docker 守护进程重启后自动拉起保证服务可用性environment:容器首次启动时自动完成数据库初始化创建名为wordpress的数据库以及用户wordpress密码wordpress同时设置 root 密码somewordpressexpose: - 3306 - 33060仅将端口暴露给 Compose 内部网络不映射到宿主机端口外部无法直接访问数据库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 对数据库的更新、已安装的主题与插件以及上传的媒体文件ports: - 80:80将容器内 80 端口映射到宿主机 80 端口浏览器通过宿主机地址直接访问站点environment:通过WORDPRESS_DB_*系列环境变量向 WordPress 告知数据库连接信息WORDPRESS_DB_HOSTdb指向同一 Compose 网络内的db服务名Compose 内置 DNS 会解析该服务名用户名、密码、库名均与db服务中MYSQL_*创建的值一一对应命名卷声明volumes: db_data: wp_data:两个命名卷db_data与wp_data在顶层显式声明。docker compose down默认会保留它们从而在容器重建后依然保留数据库与站点文件只有显式删除卷--volumes/-v才会清空数据。注意WordPress Multisite多站点仅在端口80和443上工作。如果你把ports中的宿主机端口改成其他值多站点功能将无法正常工作。构建并启动项目在项目目录中执行以下命令启动整套环境$ docker compose up -d-ddetached表示后台运行。该命令会完成三件事拉取所需的 Docker 镜像、创建默认网络与命名卷、启动 wordpress 与数据库两个容器。实际执行时输出大致如下$ 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核对容器状态与端口映射。本仓库的 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 端口映射到容器内 80 端口而数据库容器仅以内部端口形式暴露3306/tcp, 33060/tcp无0.0.0.0:...-映射外部网络无法直接触达数据库——这正是expose与ports两种声明方式的效果差异。在浏览器中完成 WordPress 安装启动后WordPress 会运行在 Docker 主机的80端口上。若使用 Docker Desktop for Mac / Windows可直接访问http://localhost:80打开站点。注意容器刚启动时站点并非立即可用首次初始化可能需等待一两分钟请耐心等待第一个页面加载完成。首次访问会进入 WordPress 自带的五分钟安装向导。第一步是选择安装语言选定语言并点击 Continue 后进入站点信息设置页面需要填写站点标题、管理员用户名、密码与邮箱并可选择是否允许搜索引擎索引站点填写完毕后点击 Install WordPress即可完成安装并以管理员身份登录后台。此时数据库连接信息已由WORDPRESS_DB_*环境变量自动配置好安装过程无需手动填写数据库参数。关闭与清理停止并保留数据$ docker compose downdocker compose down会移除容器与默认网络但保留db_data与wp_data两个命名卷因此你的 WordPress 数据库、主题与插件数据依然存在下次up -d后站点数据完整恢复。停止并删除全部数据$ docker compose down --volumesdocker compose down --volumes除移除容器与默认网络外还会删除 WordPress 数据库即删除命名卷中的数据。本仓库的 wordpress-mysql/README.md 使用等价的-v参数$ docker compose down -v需要彻底重置环境时使用该命令。深入参考仓库内的 WordPress 生产化示例官方文档示例末尾指向了本仓库中更完整的实战样本 wordpress-mysql/README.md其对应的 compose.yaml 与本文配置在核心思路上完全一致可作为继续深入的参照架构兼容性为兼容 AMD64 与 ARM64 两种架构仓库示例默认使用mariadb:10.6.4-focal如需使用 MySQL取消注释#image: mysql:8.0.27即可与官方文档示例的策略完全相同数据持久化db_data卷挂载于/var/lib/mysql持久化数据库文件保证down后数据不丢失生命周期docker compose up -d部署、docker compose down停止、docker compose down -v连带删除全部 WordPress 数据。仓库中还包含其他 Compose 快速上手样本可作横向参考官方文档示例目录 official-documentation-samples/README.md 收录了 Djangodjango/README.md与 Railsrails/README.md两个同系列快速入门分别演示 Compose 编排 PostgreSQL 后端应用的完整套路有助于理解应用服务 数据服务这一 Compose 通用编排模式。小结通过本文的docker-compose.yml你已能用一条docker compose up -d命令获得一套完整的 WordPress 站点mariadb容器承载数据库并借助命名卷持久化数据wordpress容器承载站点文件并映射 80 端口对外服务down保留数据、down --volumes彻底清理。这套配置既是官方文档推荐的起步模板也与仓库内 wordpress-mysql/compose.yaml 的生产化样本保持一致可直接复制到自己的项目中使用。赞分享示例工程【免费下载链接】awesome-composeAwesome Docker Compose samples项目地址https://gitcode.com/gh_mirrors/aw/awesome-compose点击查看免费下载相关推荐gpt-researcher Docker 快速部署指南docker-compose 与 Docker CLI 完整实战gpt researcher Docker 快速部署指南docker compose 与 Docker CLI 完整实战 本文围绕 gpt researche人工智能AI 应用深度研究AI Agent自主智能体RAG多智能体后端biliTickerBuy Docker 部署实战从 docker run 到 docker compose 的完整配置指南biliTickerBuy Docker 部署实战从 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 实战用继电器与 MQTT 构建响应土壤湿度的自动植物浇水系统下一篇Polar 前端性能优化规避 Barrel 文件导入砍掉 React/Next.js 数百毫秒模块加载与冷启动开销创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表