docker环境下wordpress迁移并更换域名
先执行docker inspect xxx
找到 Mount 部分,将挂载的 /var/www/html 目录打包(或者直接使用docker cp命令将该目录复制出来再打包也一样)
mysql容器也是一样,将 /var/lib/mysql 目录进行打包
打包后的两个文件复制到新的机器上解压,分别重命名为 html 和 mysql(命名随便)
使用 docker run ... -v xxx:xxx -u "1000:1000" xxx
或者docker-compose的方式启动wordpress和mysql,docker-compose.yml如下:
version: '3.1'
services:
wordpress:
image: wordpress
container_name: wordpress-web
restart: unless-stopped
user: "1000:1000"
networks:
- huntzou_website
environment:
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_USER: xxx
WORDPRESS_DB_PASSWORD: xxx
WORDPRESS_DB_NAME: wp_db
WORDPRESS_TABLE_PREFIX: wp
volumes:
- /home/hunt/Documents/docker_properties/wordpress/html:/var/www/html
- /etc/localtime:/etc/localtime
mysql:
image: mysql
container_name: wordpress-db
user: "1000:1000"
restart: unless-stopped
networks:
- huntzou_website
#command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: wp_db
MYSQL_ROOT_PASSWORD: zh613
volumes:
- /home/hunt/Documents/docker_properties/wordpress/mysql:/var/lib/mysql
- /etc/localtime:/etc/localtime
networks:
huntzou_website:
external: true
其中-v的挂载目录就是打包的那个目录,挂载点和原主机挂载点相同。
-u 1000:1000 或者 user: 1000:1000 的作用是让容器内的进程在宿主机运行时以uid为1000的用户身份运行,这里应调整为你打包文件的拥有者用户id和组id。这一步是为了解决权限问题。如果不指定用户id,我这里是默认使用uid为999的用户,而我打包的文件所有者为1000的用户,所以会出现权限问题。或者也可以直接将打包的文件使用 chmod -R 777 的方式来解决。
启动两个容器后,如果修改了域名此时还不能访问,需要修改网站的url,修改方式为:
进入到mysql容器:docker exec -it wordpress-db bash
进入wordpress到数据库,我的是 wp_db,然后执行下面这个命令修改网站url:update wpoptions set option_value="https://blog.wud.cc" where option_name="siteurl";
其中表名wpoptions前缀根据最初配置有所不同。
然后就可以访问网站了,再去wordpress后台(/wp-admin)设置里把网站的地址和首页地址修改统一即可