Skip to content

门泊吴船亦已谋

Docker 部署 WordPress 与数据备份

阅读本文了解 Docker 上的 WordPress 快速部署,及其数据备份获取

大致步骤

先创建 Volume 用于备份
然后运行 MySQL 容器
最后运行 WordPress 容器

创建 Volume

创建分别用于 MySQL 和 WordPress 的 volume

$ docker volume create data_mysql_wordpress
$ docker volume create data_wordpress

运行 MySQL 容器

先拉取 mysql 镜像(如果需要)
然后创建并运行 mysql 容器

$ docker pull mysql

$ docker run -d --name mysql_wordpress \
   -v data_mysql_wordpress:/var/lib/mysql \
   -e MYSQL_ROOT_PASSWORD=root \
   mysql --default-authentication-plugin=mysql_native_password

参数解释:
-d 后台运行
--name 设置容器的 name
-v 映射数据卷
-e 设置环境变量
mysql --default-authentication-plugin=mysql_native_password
设置 mysql 的默认加密插件

加密插件问题
因为这里使用了 MySQL 8.0,它的默认认证插件是 caching_sha2_password,WordPress 连接比较麻烦,改回 mysql_native_password 省事一点。
或者可以直接使用 mysql:5.7 镜像

运行 WordPress 容器并链接 MySQL

先拉取 wordpress 镜像(如果需要)
然后创建并运行 wordpress 容器

$ docker pull wordpress

$ docker run -d --name wordpress \
   -p 80:80 -v data_wordpress:/var/www/html \
   --link mysql_wordpress:mysql wordpress

参数解释:
-d 后台运行
--name 设置容器的 name
-p 映射容器 80 端口到本机的 80 端口
-v 映射数据卷
--link 链接 MySQL

获取备份

使用 docker volume inspect 命令获取 mysql 和 wordpress 的数据存储路径
输出里的 Mountpoint 即是数据存储路径

$ docker volume inspect data_mysql_wordpress
[
    {
        "CreatedAt": "2019-12-10T01:21:23+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/data_mysql_wordpress/_data",
        "Name": "data_mysql_wordpress",
        "Options": {},
        "Scope": "local"
    }
]

$ docker volume inspect data_wordpress
[
    {
        "CreatedAt": "2019-12-10T01:24:43+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/data_wordpress/_data",
        "Name": "data_wordpress",
        "Options": {},
        "Scope": "local"
    }
]