【干货】Wordpress容器数据迁移到其他服务器的步骤详解,并解决迁移后无法登录的问题
我可是高贵的Altair
编辑于 2022年07月29日 10:01

以我的docker-compose.yml配置为例

忽视我的./uploads那行,那个是破解上传文件大小上限用的

启动后。。。

该文章分为备份和恢复两部分。。。。

备份

假如现在要迁移迁移整个wordpress到另一台服务器,分为以下几步完成:

1、从容器创建wordpress和数据库的新镜像,创建后的名字例如为example_db和example_web

2、docker images查看刚刚保存的镜像

3、    docker save -o 将镜像保存为tar文件

4、由于我docker-compose配置了Volume,需要同时备份挂载的数据,通过docker volume ls查看volume的情况,如下图红框为需要备份的volume

5、docker inspect +volume名称,可查看到volume的实际路径,下图以wordpress_db卷为例。

进入改目录后,tar -zcvf volume_db.tar.gz _data/*把整个_data目录打包成压缩文件,同理也把wordpress_wordpress卷的也打包备份

6、完成以上操作后,把两个容器的tar文件和两个volume文件传到要部署的新服务器,还有docker-compose.yml配置文件

我这里把原来的容器数据卷和容器镜像都删了,模拟成新的服务器恢复备份。

恢复

1、docker load -i xxx.tar导入使用 docker save 命令导出的镜像,即example_db.tar和example_web.tar,docker images验证查看

2、docker-compose up -d启动容器(启动前记得修改配置文件内image字段的镜像名称)

3、启动后可以马上docker-compose down,然后docker volume ls已经可以看到创建的数据卷,根据上面“备份步骤第5步”找到实际路径,把原来_data文件夹内的所有文件删除,再把之前备份的volume_db.tar.gz和volume_web.tar.gz压缩包解压到数据卷相应的_data下

4、docker-compose up -d重新启动容器,如果启动后无法打开网页,但telnet端口正常,则需要进行下一步操作

5(最重要的一步)、执行docker exec -it <数据库容器id> bash进入数据库容器,登录数据库,数据库账号密码在docker-compose.yml文件可查看

查看数据库

进入数据库

通过查询语句 select * from wp_options limit 1; 查看wp_options表单optione_name为siteurl的这一行

可以看到option_value这个属性值,这个WordPress地址(URL)就是迁移前设置的值,我们可以通过在数据库中对齐目前的迁移后的ip地址或者域名来解决。

更新语句如下,请替换填写ip或域名:

update wp_options set option_value=replace(option_value,'旧IP','新IP') where option_value LIKE '%旧IP%';

更新完后,docker restart <容器id>重启一下数据库容器,然后再次访问测试发现已经完全迁移