通过Docker部署WordPress 论坛

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 在前面的章节我们学习了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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
数据库 Nacos Docker
基于docker-compose部署微服务基本环境
基于docker-compose部署微服务基本环境
5 0
|
3天前
|
运维 Linux 虚拟化
Docker详解(三)——Docker安装与部署
Docker详解(三)——Docker安装与部署
35 4
|
3天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
28 1
|
5天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
35 1
|
8天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
60 7
|
10天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
49 1
|
15天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
38 3
|
18天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
18天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0
|
18天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
32 0