一、Docker镜像文件的迁移
1.1 源服务器:备份Docker的mysql:80镜像文件
[root@docker ]#docker save -o docker_image_mysql_8.0 mysql:8.0
1.2 源服务器:备份Docker的wordpress镜像文件
[root@docker ]#docker save -o docker_image_wordpress wordpress
1.3 源服务器:将docker_image_mysql_8.0和docker_image_wordpress迁移至目标服务器
[root@docker ]#scp -r -p docker_image_mysql_8.0 new_ip:/tmp [root@docker ]#scp -r -p docker_image_wordpress new_ip:/tmp
说明:如果没有重新构建过镜像文件,可以直接从Docker Hub重新下载对应版本的镜像文件。
二、Wordpress后台URL路径修改
三、Mysql和Wordpress数据文件的迁移
3.1 目标服务器:创建数据存储目录
[root@docker ]#mkdir -p /data/wordpress
3.2 源服务器:暂停docker 的mysql和wordpres容器
[root@docker ]#docker stop wp_mysql wordpress
3.3 源服务器:Mysql数据库文件的迁移
[root@docker ]#scp -r -p /data/wordpress/mysql new_ip:/data/wordpress/
3.4 源服务器:WordPress数据文件的迁移
[root@docker ]#scp -r -p /data/wordpress/html new_ip:/data/wordpress/
四、Mysql和Wordpress的镜像文件加载
4.1 目标服务器:mysql:8.0镜像文件的加载
[root@docker ]#docker load -i /tmp/docker_image_mysql_8.0
4.2 目标服务器:mysql:8.0镜像文件的加载
[root@docker ]#docker load -i /tmp/docker_image_wordpress
4.3 目标服务器:查看镜像文件加载结果
[root@docker ]#docker images
五、Mysql和wordpress的容器启动
5.1 目标服务器:启动mysql:8.0容器
[root@docker ]#docker run -d --name wp_mysql \ -v /data/wordpress/mysql:/var/lib/mysql mysql:8.0
5.2 目标服务器:启动wordpress容器
[root@docker ]#docker run -d --name wordpress \ -v /data/wordpress/html:/var/www/html \ -p 80:80 --link wp_mysql:mysql \ -e WORDPRESS_DB_PASSWORD='mysql_password' wordpress
5.3 目标服务器:访问http://new_ip:80
六、迁移后问题点修复
6.1 迁移后,发现文件上传大小限制恢复了默认值,重新添加修改
[root@docker ]#vim /data/wordpress/html/.htaccess php_value upload_max_filesize 64M php_value post_max_size 64M
6.2 迁移后,发现文件上传失败
原因分析:
a 目标服务器:进入wordpress容器,查看进程信息
[root@docker ]#docker exec -it wordpress bash root@0cf7df8476e3:/var/www/html# ps aux
b 目标服务器:从上图可以发现,运行apache进程的用户是‘www-data’,UID是‘33’,然后我们查看wordpress根目录的权限。
c 目标服务器:wordpress的根目录‘html’,目录属主属组是root,所以apache进程没有修改的权限,导致无法上传文件
问题解决:
目标服务器:因此修改‘html’目录的属主属组即可。
[root@docker ]#chown -R 33:33 html
6.3 迁移后,文章图片无法显示
说明:由于wordpress迁移后,Mysql的URL路径没有修改,导致网站或者图片无法正常显示。
方法:进入docker-mysql容器内部,直接用SQL语句进行数据库信息修改。
[root@docker ]#docker exec -it wp_mysql bash root@40df271ff514:/# mysql -uroot -p'mysql_password'
a 目标服务器:修改站点的URL和主页地址
(如果迁移前,在Wordpress后台的URL链接有修改,此处可以不修改)
查看:
mysql>SELECT option_value FROM wp_options WHERE option_name = 'home' OR option_name = 'siteurl';
修改:
mysql>UPDATE wp_options SET option_value = replace (option_value,'http://源地址','http://目标地址') WHERE option_name = 'home' OR option_name = 'siteurl';
b 目标服务器:修改文章内部连接和附件地址
查看:
mysql>SELECT post_content FROM wp_posts;
修改:
mysql>UPDATE wp_posts SET post_content = replace (post_content,'http://源地址','http://目标地址');
c 目标服务器:修改文件默认的永久链接
查看:
mysql>SELECT guid FROM wp_posts;
修改:
mysql>UPDATE wp_posts SET guid = replace (guid,'http://源地址','http://目标地址');
d 目标服务器:修改评论中的连接地址
查看:
mysql>SELECT comment_author_url FROM wp_comments;
修改:
mysql>UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url,'http://源地址','http://目标地址');
至此,Docker安装方式的wordpress迁移并设置完成,可以正常使用。