Fari

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)设置里把网站的地址和首页地址修改统一即可

Tags: