通过Docker部署WordPress 论坛

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 在前面的章节我们学习了docker的基本操作,本章节我们进行一次实际的部署实验,通过docker容器的方式部署wordpress论坛。

通过Docker部署WordPress 论坛


1. 创建相关实验资源

  1. 在体验实验室,单击创建资源。
  2. (可选)在实验室⻚⾯左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、⽤户信息等)。 说明:资源创建过程需要1~3分钟。

2. 启动wordpress论坛至少需要创建两个容器,一个mysql数据库容器和一个运行wordpress的apache容器。

启动wordpress论坛至少需要创建两个容器,一个mysql数据库容器和一个运行wordpress的apache容器。

  1. 首先我们先来编写docker-compose.yml文件
vi docker-compose.yml
version: "3"
services:
   db:
     image: mysql:8.0
     command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci     
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: "[MySQL root账号密码]"
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: "[MySQL wordpress账号密码]"
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: "[MySQL wordpress账号密码]"
volumes:
  db_data:

此处我们在mysql配置文件中,使用的command和restart两个配置项。这两项的定义如下

  • command:等同于Dockerfile中的CMD命令。注意,如果容器设置了EntryPoint,则command会作为的参数传递给EntryPoint。
  • restart:设置了容器的重启策略,如果容器在运行时因为异常退出,docker会根据restart策略选择是否重新启动容器。

2. 启动wordpress容器组

docker compose up -d

在容器组启动之后,我们可以进入GNOME桌面。通过浏览器访问论坛的首页。

在浏览器中输入http://127.0.0.1:8000

选择wordpress的界面语言,并且按"继续"

继续配置wordpress的相关信息。包括论坛名称,用户名,密码,然后按"安装WordPress"

安装之后点击登录,即可进入登录界面

登录之后即可进入wordpress管理后台

接下来我们进入wordpress前台浏览界面。输入网址 http://127.0.0.1:8000

出现浏览界面说明wordpress安装成功。

3. 接下来我们来分析一下wordpress容器组的情况。以及如何保存论坛的状态

  1. 我们先来查看容器的运行情况,我们切换到控制台页面
docker ps

通过docker compose部署的容器,默认容器的名称为 [工程名-服务名-服务数量]

  1. 我们继续查看容器的存储情况
docker inspect -f "{{json .Mounts}}" root-wordpress-1 | jq
docker inspect -f "{{json .Mounts}}" root-db-1 | jq

发现wordpress容器默认创建了一个volume挂载到/var/www/html路径。而db容器的volume被命名为root_db_data。其源位置为/var/lib/docker/volumes/root_db_data/_data

  1. 查看volume的源位置。以及备份volume
cd /var/lib/docker/volumes/root_db_data/_data
ls

根据经验我们发现,root_db_data volume的内容为mysql数据存放的文件夹。这种情况下我们以打包保存此文件夹的内容,以实现容器中mysql数据库的备份。

cd ~
tar czvf wp-db.tar.gz -C /var/lib/docker/volumes/root_db_data/_data .
ll wp-db.tar.gz

和db容器类似,我们根据经验,确定wordpress容器的volume路径为apache服务器的页面路径。我们也可以通过保存volume内容的方式来持久化wordpres容器中的页面设定,在这里我们通过docker inspect获得wordpress自动生成的volume的source信息,并且将路径直接传给tar指令来打包。

tar czvf wp.tar.gz -C $(docker inspect -f "{{with index .Mounts 0}}{{.Source}}{{end}}" root-wordpress-1) .
ll wp.tar.gz

  1. 接下来我们尝试删除原有容器和Volume,并通过tar来恢复wordpress服务的状态。
docker compose down
docker volume prune

修改docker-compse.yml文件,为wordpress容器添加一个指定的volume

vi docker-compse.yml
version: "3"
services:
   db:
     image: mysql:8.0
     command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: MySQLPassword
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - html:/var/www/html
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
  db_data:
  html:

为了可以初始化volume,我们先通过创建容器组,但并不启动

docker compose create

通过tar文件还原volume的内容

tar xzvf wp-db.tar.gz -C $(docker inspect -f "{{with index .Mounts 0}}{{.Source}}{{end}}" root-db-1)
tar xzvf wp.tar.gz -C $(docker inspect -f "{{with index .Mounts 0}}{{.Source}}{{end}}" root-wordpress-1)
docker compose start

我们切换回GNOME界面。访问http://127.0.0.1:8000发现页面没有进入初始化界面。访问 http://127.0.0.1:8000/wp-login.php使用之前设置的密码登录,发现依然可以登录。说明页面和数据库都已经从备份中恢复。

实验地址:https://developer.aliyun.com/adc/scenario/7884e3ab68e349ddb8e556a95e06ffed

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
151 91
|
6天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
13天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
72 44
|
21天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
23天前
|
缓存 Ubuntu 网络安全
使用 Docker 快速搭建最新版 Flarum 论坛
本文分享了使用Docker在4核4GB的Ubuntu 20.04云服务器上搭建Flarum轻论坛的经验。通过Nginx-Proxy和ACME伴侣自动配置SSL,并使用Docker Compose部署Flarum及MariaDB容器。关键步骤包括:创建Nginx-Proxy容器、配置Flarum容器及其环境变量、设置桥网络连接以及更新Flarum版本。文中提供了详细的Docker Compose配置示例和必要的环境变量设置,帮助读者顺利搭建并运行Flarum论坛。
|
25天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 23
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
49 22
|
1月前
|
弹性计算 运维 Ubuntu
使用阿里云服务器自动搭建WordPress网站流程,超简单by系统运维管理OOS
本教程介绍如何使用阿里云服务器(ECS)和系统运维管理OOS自动搭建WordPress网站,支持Ubuntu、CentOS及Alibaba Cloud Linux等操作系统。前提条件包括ECS实例处于运行中、有公网IP且安全组已开启80端口。安装步骤简单:进入ECS快速购买控制台选择预装WordPress,确认下单后通过管理控制台查看实例详情并开放安全组端口。最后,通过实例公网IP访问,出现WordPress登录页即表示安装成功。
|
4月前
|
弹性计算 关系型数据库 MySQL
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站