通过Docker部署WordPress 论坛

简介: 在前面的章节我们学习了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。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
2501 4
|
6月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
300 5
|
7月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
602 12
docker 部署 sftp
|
6月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1892 8
|
6月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
5157 8
|
6月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
895 4
|
6月前
|
缓存 应用服务中间件 PHP
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
本文分享三大网站提速方案:启用Memcached减少数据库压力,使用Super Static Cache生成静态页面,结合CDN实现全球加速,全面提升WordPress加载速度与用户体验。
260 1
|
11月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
287 19
|
12月前
|
缓存 搜索推荐 数据库
使用SiteGround搭建WordPress网站的方法
以上就是在SiteGround上搭建WordPress网站的步骤。这个过程可能需要一些时间和耐心,但只要你按照步骤操作,你就可以成功搭建自己的WordPress网站。
414 23

热门文章

最新文章