一、通过docker compose 自动一键部署WordPress

1. 准备工作

  • 安装 Docker 和 Docker Compose
  • 确保服务器有公网 IP(如果需要外部访问)
  • 域名(可选,用于绑定网站)

2. 创建 Docker Compose 配置文件

创建一个docker-compose.yml文件,内容如下:

version: '3.8'services:# WordPress服务wordpress:image: wordpress:latestrestart: alwaysports:- "80:80"  # 将容器的80端口映射到主机的80端口environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: your_secure_passwordWORDPRESS_DB_NAME: wordpress_dbvolumes:- wordpress_data:/var/www/html  # 持久化存储WordPress数据depends_on:- db# 数据库服务db:image: mysql:5.7restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: root_secure_passwordMYSQL_DATABASE: wordpress_dbMYSQL_USER: wordpressMYSQL_PASSWORD: your_secure_passwordvolumes:- db_data:/var/lib/mysql  # 持久化存储数据库数据volumes:wordpress_data:db_data:

3. 启动服务

在配置文件所在目录执行以下命令:

# 启动服务
docker compose up -d# 查看运行状态
docker compose ps# 停止服务(保留容器和数据)
docker compose stop# 停止并删除服务(保留数据卷)
docker compose down# 执行删除命令(包含数据卷)
docker compose down -v# 强制重新构建并启动
docker compose up -d --force-recreate

4. 初始化 WordPress

  1. 打开浏览器,访问服务器 IP 地址(或绑定的域名)
    在这里插入图片描述

  2. 选择网站语言
    在这里插入图片描述

  3. 填写网站基本信息(站点标题、用户名、密码、邮箱)

    在这里插入图片描述

  4. 点击 “安装 WordPress” 完成初始化

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5. 后续操作

  • 登录后台:访问http://你的IP/wp-admin
  • 安装主题:在后台 “外观 - 主题” 中选择合适的主题
  • 安装插件:根据需求安装必要的插件(如 SEO、安全、备份等)
  • 配置域名:将域名解析到服务器 IP,并在 WordPress 设置中更新站点地址

二、手动部署WordPress

1. 提前创建数据卷(持久化数据)

为了确保 WordPress 文件和 MySQL 数据在容器删除后不丢失,先创建两个数据卷:

# 创建存储WordPress文件的数据卷
docker volume create wordpress_data# 创建存储MySQL数据的数据卷
docker volume create db_data
2. 创建自定义网络(让容器互通)

WordPress 容器需要连接到 MySQL 容器,最好创建一个自定义网络(而非默认网络),这样容器可以通过 “容器名” 互相访问(默认网络可能需要 IP 地址,不方便):

docker network create wordpress_network
3. 启动 MySQL 数据库容器

先启动数据库容器(因为 WordPress 依赖数据库),配置环境变量、数据卷和网络:

docker run -d \--name wordpress_db \  # 给容器起个名字(方便后续引用)--network wordpress_network \  # 加入自定义网络-e MYSQL_ROOT_PASSWORD=root_secure_password \  # MySQL root密码(替换为你的强密码)-e MYSQL_DATABASE=wordpress_db \  # 自动创建的数据库名-e MYSQL_USER=wordpress \  # 给WordPress用的数据库用户-e MYSQL_PASSWORD=your_secure_password \  # 数据库用户密码(替换为你的密码)-v db_data:/var/lib/mysql \  # 挂载数据卷(持久化MySQL数据)--restart always \  # 自动重启策略mysql:5.7  # 使用的镜像(MySQL 5.7)
  • 参数说明:
    • -d:后台运行容器
    • --name:指定容器名称(后续 WordPress 容器会通过这个名称连接数据库)
    • --network:加入之前创建的网络,确保和 WordPress 容器在同一网络
    • -e:设置环境变量(初始化 MySQL 配置)
    • -v:挂载数据卷(db_data卷映射到容器内的/var/lib/mysql,MySQL 数据存储目录)
    • --restart always:容器退出后自动重启(保证服务稳定性)
4. 启动 WordPress 容器

等 MySQL 容器启动就绪后(约 30 秒,可通过docker logs wordpress_db查看启动日志),启动 WordPress 容器:

docker run -d \--name wordpress_site \  # 容器名称--network wordpress_network \  # 加入同一网络(与数据库互通)-p 80:80 \  # 端口映射(主机80端口 → 容器80端口)-e WORDPRESS_DB_HOST=wordpress_db \  # 数据库主机(填MySQL容器的名称,网络内可直接解析)-e WORDPRESS_DB_USER=wordpress \  # 数据库用户名(与MySQL配置一致)-e WORDPRESS_DB_PASSWORD=your_secure_password \  # 数据库密码(与MySQL配置一致)-e WORDPRESS_DB_NAME=wordpress_db \  # 数据库名(与MySQL配置一致)-v wordpress_data:/var/www/html \  # 挂载数据卷(持久化WordPress文件)--restart always \  # 自动重启策略wordpress:latest  # 使用的镜像(最新版WordPress)
  • 参数说明:
    • --network:与 MySQL 容器在同一网络,因此WORDPRESS_DB_HOST可以直接填 MySQL 容器的名称(wordpress_db
    • -p 80:80:外部通过主机的 80 端口访问 WordPress(如http://服务器IP
    • -vwordpress_data卷映射到容器内的/var/www/html(WordPress 的核心文件、主题、插件等存储目录)
    • 环境变量必须与 MySQL 容器的配置完全一致,否则 WordPress 无法连接数据库
5. 验证部署
  1. 查看容器状态:

    docker ps  # 查看运行中的容器,应包含wordpress_site和wordpress_db
    
  2. 访问网站:在浏览器中输入服务器的 IP 地址(或绑定的域名),应显示 WordPress 的初始化页面。

后续操作(与 Docker Compose 方式一致)

  • 初始化 WordPress:按页面提示设置站点标题、管理员账号等
  • 登录后台:http://服务器IP/wp-admin
  • 管理容器:
    • 停止容器:docker stop wordpress_site wordpress_db
    • 启动容器:docker start wordpress_site wordpress_db
    • 删除容器(数据卷保留):docker rm wordpress_site wordpress_db
  • 备份数据:数据卷存储在/var/lib/docker/volumes/目录,可直接备份该目录

与 Docker Compose 的区别

  • 手动操作需要分步执行命令,且需要手动管理网络和启动顺序(必须先启动数据库)
  • 没有 “一键启动 / 停止所有服务” 的便捷性(Docker Compose 的up/down命令)
  • 配置分散在命令中,不如docker-compose.yml文件直观(后期修改需重新执行docker run命令)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920218.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920218.shtml
英文地址,请注明出处:http://en.pswp.cn/news/920218.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

http与https配置

Web 服务详解:HTTP 与 HTTPS 配置 一、HTTP 服务概述 HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输网页数据的基础协议,默认使用80 端口,以明文形式传输数据。常见的 HTTP 服务软件…

Python爬虫实战:研究amazon-scrapy,构建亚马逊电商数据采集和分析系统

1 引言 1.1 研究背景 电子商务的高速发展使电商平台成为数据价值的核心载体。亚马逊作为全球领先的电商生态,截至 2024 年第二季度,其平台商品总量突破 1.5 亿,日均活跃用户超 3 亿,每日产生 PB 级的交易数据与用户行为记录。这些数据包含商品特征(价格、规格、品牌)、…

基于ERNIE 4.5的多智能体协作的自动化视频舆情分析报告生成器

多智能体协作的自动化视频舆情分析报告生成器 1. 项目的意义与价值 从“非结构化视频”中挖掘“结构化洞察”的通用挑战 在当今的数字生态中,视频已成为信息传播、知识分享和消费者意见表达的核心媒介。从企业内部的会议录屏、技术培训,到外部的市场宣传…

Java全栈开发面试实录:从基础到实战的深度解析

Java全栈开发面试实录:从基础到实战的深度解析 面试官与应聘者的对话记录 第一轮:基础问题与项目背景 面试官(中年男性,穿着整洁): 你好,欢迎来到我们公司。我是今天的面试官,可以先…

如何清除webview138、139版本软键盘占用的区域

好的,这个问题非常具体且关键。在 Android System WebView 的 138 和 139 版本(基于 Chromium 113)的上下文中,“清除软键盘占用的区域”通常意味着:在软键盘收起后,WebView 的布局或视口没有正确恢复&…

深度学习:卷积神经网络(CNN)

文章目录一、CNN 基础认知1.1 图像在计算机中的存储形式1.2 图像识别的核心需求:画面不变性1.3 传统神经网络的局限二、CNN 核心原理:三大核心层与关键操作2.1 卷积层(1)什么是卷积操作?(2)卷积…

iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持

在之前的 《Flutter 又双叒叕可以在 iOS 26 的真机上 hotload》 和 《Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update》 我们聊过,由于 iOS 26 开始,Apple 正式禁止了 Debug 时 mprotect 的 RX 权限,导致了 Flutter 在 Debug 运…

机器学习全流程拆解 _ 从数据到模型的科学之道

-—— 避开80%项目失败的隐形成本,掌握高效建模方法论*📌 一、明确目标:成败的起点 1. 问题定位 分类任务:区分二分类/多分类/多标签分类预测任务:标量预测(如房价)vs 向量预测(如股…

Android 广告轮播全实现:图片与视频混合展示的完整方案

广告轮播是移动应用中提升用户转化率的核心组件,尤其在电商、资讯类应用中应用广泛。传统轮播仅支持图片展示,而现代应用需要兼顾图片和视频内容以增强吸引力。本文将详细讲解如何实现一个支持图片与视频混合播放的高性能广告轮播,涵盖布局设…

AI大模型企业落地指南-笔记01

前言AI技术的发展趋势必然是越来越普及,越来越“技术平权”的。在未来10年内,AI将以各种方式“融入”人类世界,与人类乃至世界深度融合。一. 概念第1章 AI与大模型概述1.1 什么是AI人工智能(全称Artificial Intelligence&#xff…

Linux-孤儿进程和僵死进程

文章目录孤儿进程概述僵死进程概述孤儿进程 概述 父进程运行结束,子进程还在运行,此时,子进程就成了孤儿进程(Orphan Process)每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init &#xf…

【Redis 进阶】----主从复制(重点理解流程和原理)

在分布式系统中为了解决单点问题(某个服务器程序只有一个节点(只搞一个物理服务器来部署这个服务器程序)。可用性不高:如果这个机器挂了意味着服务就中断了;性能 / 支持的并发量比较有限)。通常会把数据复制…

【Redisson】redis最佳实践-RedissonUtils+Caffeine

RedissonUtils - 企业级 Redis 缓存工具库 - 二级缓存 项目地址: hhttps://gitee.com/chen934298133/redisson-utils问题反馈: Issues邮箱: chen934298133163.com 📖 项目简介 RedissonUtils 是一个基于 Redisson 的企业级 Redis 缓存工具库,提供了完…

QT(QTableWidget)

QT6QTableWidget QTableWidget是一种Item Widget组件,它以表格形式和管理数据,表格的每个单元格关联一个QTableWidgetItem对象,可以设置每个单元格的文字内容、字体、文字颜色、背景色、图标等,还可以有复选框。每个单元格还可以存…

Sentinel相关记录

系列文章目录 draft Sentinel 是阿里巴巴开源的 轻量级服务防护组件,主要用于实现以下功能:流量控制FlowRule(Rate Limiting):限制单位时间内的请求量,防止系统过载。 熔断降级DegradeRule(Ci…

2025年渗透测试面试题总结-29(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 二百四十一、XSS 设置Http-Only如何绕过 二百四十二、XSS攻击手段分类 二百四十三、高杀软覆盖工作组的渗…

如何用Wireshark捕获当前房间路由器和主机的数据包

一、前期工作 在我的这篇文章中: Wireshark USRP联合波形捕获(上)-CSDN博客 通过192.168.1.103这个主机ip筛选Wireshark捕获的数据包,认为Source和Direction中至少一个包含192.168.1.103才能代表路由器和主机之间的WiFi信号。 …

深度解析游戏引擎中的相机:视图矩阵

在现代游戏引擎中,相机系统是不可或缺的一部分。它决定了玩家在游戏中看到的视角和场景。而视图矩阵作为相机系统的核心组件之一,起到了至关重要的作用。本文将深入探讨视图矩阵的原理、计算方法及其在游戏引擎中的应用。 视图矩阵的基本概念 视图矩阵…

96、23种设计模式之原型模式(5/23)

原型模式(Prototype Pattern)是创建型设计模式的一种,其核心思想是通过复制现有对象(原型)来创建新对象,而非通过构造函数或工厂方法从头构建。该模式将对象的创建过程从构造逻辑转移到复制操作&#xff0c…

【python与生活】如何用Python写一个简单的自动整理文件的脚本?

用 Python 写一个自动整理文件的脚本很简单,核心思路是:按文件后缀(如 .jpg、.pdf)将文件分类,移动到对应的文件夹(如「图片」「文档」)中。以下是一个实用的实现方案,新手也能轻松修…