登录
    Technology changes quickly but people's minds change slowly.

docker-compose 迁移 wordpress

技术宅 破玉 1349次浏览 0个评论

  docker-compose 允许用户通过一个单独的docker-compose.yml.模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。
我一直想把自己的博客迁移到docker 上来,之前看docker实战,记得里面有利用docker-compose 配置wordpress 的说明,趁着周末,拿出点时间将博客完全迁移过来。

准备工作

备份

  首先要做的是数据的备份,由于数据不多,我们首先利用mysqldump将mysql 中的数据备份出来。

 mysqldump -u root -p wordpress_db >wordpress.2019.11.02.sql

然后将 wordpress 的程序 备份一下,避免出现问题。

安装 docker-compose

 sudo curl -L "https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授权

sudo chmod +x /usr/local/bin/docker-compose

编写docker-compose.yml

编写docker-compose.yml, 在这之前需要查看自己之前的php 版本以及wordpress 版本,然后更改 以下文件的wordpress 镜像的版本。不然的化,迁移可能会有问题.
  可以去docker hub(https://hub.docker.com/_/wordpress?tab=tags&page=1&ordering=-last_updated) 上查找版本,我们使用的是 apache 版本的。然后将挂载的文件夹建好。

version: "3"
services:

  db:
    image: mysql:5.7
    container_name: mysql-wp
    volumes:
      - /alidata/mysql/db_data:/var/lib/mysql
    ports:
      - "13306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpresspass

  wordpress:
    depends_on:
      - db
    image: wordpress:5.2.0-php7.1-apache
    ports:
      - "9000:80"
    container_name: wordpress
    volumes:
      - /alidata/www/wordpress:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:13306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpresspass

开始迁移

  在 docker-compose.yml 同级目录执行以下命令

docker-compose up -d

查看日志:

docker-compose logs

将之前备份好的数据导入到 mysql 中。建议客户端连接之前的数据库,将sql文件导入。执行之前,如果域名有变化,需要将sql文件中的域名全部替换掉再执行。
然后服务器上将刚才的服务停掉

docker-compose stop

  将挂载的wordpress 文件夹中的文件删掉,替换为自己的wordpress 文件。记得给文件夹赋权限。

docker-compose start

这样程序就迁移成功了。

配置nginx 代理

  nginx 我们直接装在主机里面了,没有使用docker 管理。
编写nginx 配置文件。

server {
    listen 80;
    server_name xxx.xxx.com;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_redirect off;
        proxy_set_header Host $host;
    }
}

将配置文件放在nginx 配置文件的 conf.d 文件夹中,重启nginx,访问域名即可。

之前的博客配置了固定链接 404 的问题

需要开启apache2 的 伪静态,
将容器中的配置文件拷贝出来修改

 docker cp wordpress:/etc/apache2/apache2.conf .

AllowOverride None

改为

AllowOverride All

修改完拷贝进去

docker cp apache2.conf wordpress:/etc/apache2/apache2.conf 

进入容器

docker exec -it wordpress /bin/bash

执行

a2enmod rewrite

退出容器后重启容器

docker restart wordpress

再次访问就不会404了


华裳绕指柔, 版权所有丨如未注明 , 均为原创|转载请注明docker-compose 迁移 wordpress
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址