赞
踩
通过wordpress我们可以很方便的搭建自己的博客系统,但是在备份和迁移方便有着诸多不便,尤其是数据库的迁移,因此想着可以将WordPress安装在docker中,方便了数据的迁移。
我的设备环境:
腾讯云服务器(centos 7.8)
docker的安装过程参考我另一篇博客:
https://blog.csdn.net/AnChenliang_1002/article/details/125397467
该链接的文章中第2.2节记录了docker的安装过程。
使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。
Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)
例如一个web服务再加上后端的数据库服务容器等
compose脚本可以实现自动化安装docker
更加详细的介绍可以参考以下文章:
Docker之compose介绍
Docker-Compose 简介
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
如果要安装其他版本的 Compose,将指令中的1.24.1换成你要使用的版本号即可。
#将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
#创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#测试是否安装成功:
docker-compose --version
结果如下图所示,说明compose安装成功了
cd /home
touch docker-compose.yml
然后将以下内容添加到docker-compose.yml中
version: '3.3' services: db: image: mysql:5.5 container_name: "wordpress_mysql" ports: - "3307:3306" volumes: - $PWD/db:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD:数据库root密码 MYSQL_DATABASE: wordpress MYSQL_USER: yangfeiwu MYSQL_PASSWORD: 数据库yangfeiwu用户密码 wordpress: depends_on: - db image: wordpress:latest container_name: "wordpress" ports: - "80:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: yangfeiwu WORDPRESS_DB_PASSWORD: 数据库yangfeiwu用户密码 WORDPRESS_DB_NAME: wordpress WORDPRESS_WPLANG: zh-CN volumes: - $PWD/wp-content:/var/www/html/wp-content
注意:
1、此脚本中指定了一个MySQL容器和WordPress容器,
2、其中MySQL容器使用的镜像是mysql:5.5
,创建出的容器名称是wordpress_mysql
,并将主机的3307端口映射到MySQL容器内的3306端口;
3、WordPress容器使用的镜像是wordpress:latest
,创建出的容器名称是wordpress
,并将主机的80端口映射到WordPress容器内的80端口,并且需要使用容器内的数据库3306端口;
4、上面我把mysql数据库端口映射到了3307,主机的3306先保留吧。
5、MySQL中和WordPress中需要填写名称和密码的地方,请自己设置并牢记。
我自己设置的密码记录在了https://blog.csdn.net/AnChenliang_1002/article/details/112613680,以防自己忘记。
进入docker-compose.yml所在目录,执行以下脚本
cd /home
docker-compose up -d # -d 表示启动容器后进入后台运行
如果遇到以下报错:
ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
in "./docker-compose.yml", line 13, column 22
那就好好检查第13行的第22个字符的格式,yml对格式要求很严格,我这边的问题是:和密码
之间必须要有空格,而我当时多删除了一个空格的;其实用vim打开该文件可以看出来,如下图所示是正确的情况,冒号是红的,然后后面是个空格,在后面是用户名,是绿的
当然这里要附上错误的情况,如下图所示,则是中间少了个空格
最终脚本执行成功后的界面:
此时使用docker Images
可以看到刚刚生成的两个镜像,使用docker ps
可以看到正在运行的两个容器;如下图所示:
此时我们的运行在docker里的WordPress就搭建成功了。可以通过你服务器的ip地址(例如:http://192.168.1.200/)访问你的博客了。
经过上面的步骤,我们就可以通过我们服务器的ip(或者域名)来登录我们的博客系统了,输入ip(或域名)就进入了博客的初始化界面,如下图所示:
我这边选择了中文,一步步的往下操作即可,
登录后即可
然后我们可以发布一篇文章,用以验证备份和迁移后的效果。
首先我们使用docker commit
指令将运行中的wordpress容器和mysql容器打包成镜像:
docker commit -a "anchenliang" -m "creat new wordpress img" c1a03af8bc57 worepress:worepress_bak_0325
docker commit -a "anchenliang" -m "creat new wordpress_mysql img" 6545fc7d6c54 worepress_mysql:worepress_mysql_bak_0325
然后docker images可以看到新生成了两个镜像;如下图
然后使用docker save指令将刚刚生成的镜像保存为tar文件:
docker save -o worepress_mysql_bak_0325.tar worepress_mysql:worepress_mysql_bak_0325
docker save -o worepress_bak_0325.tar worepress:worepress_bak_0325
然后可以看到当前目录下生成了这两个镜像的tar文件,如下图所示:
此时就可以将两个tar文件拷贝出来,转移到另一个服务器上;因为我只有一个服务器,因此我只能将原来的所有镜像都删掉,然后上传刚刚两个tar文件,在同一个服务器上模拟迁移过程。
先将运行的容器停止:
然后将容器删除,
再将所有的镜像删除:
此时服务器设备中没有了任何镜像,也没有任何容器;
将上一步生成的两个tar包放到新服务器的/home下,
用docker load
指令将镜像加载到系统中
此时可以看到系统中有了我们生成的两个镜像:
创建一个docker-compose.yml文件将以下内容添加到docker-compose.yml中
version: '3.3' services: db: image: worepress_mysql:worepress_mysql_bak_0325 container_name: "wordpress_mysql" ports: - "3307:3306" volumes: - $PWD/db:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: hik12345 MYSQL_DATABASE: wordpress MYSQL_USER: anchenliang MYSQL_PASSWORD: hik12345 wordpress: depends_on: - db image: worepress:worepress_bak_0325 container_name: "wordpress" ports: - "80:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: anchenliang WORDPRESS_DB_PASSWORD: hik12345 WORDPRESS_DB_NAME: wordpress WORDPRESS_WPLANG: zh-CN volumes: - $PWD/wp-content:/var/www/html/wp-content
然后执行以下命令创建容器:
docker-compose up -d # -d 表示启动容器后进入后台运行
可以看到生成了对应的容器,
此时访问域名或ip,发现我们的博客系统也能正常访问,而且迁移之前发的博客也都还在
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。