记录从迁移WordPress到docker并用Caddy反向代理端口

作者:Xie 日期:2024/09/23 分类:技术分享

导入数据到当前服务器

mkdir wordpress
cd wordpress
vim docker-compose.yml

输入

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: blog_xiecoder
      WORDPRESS_DB_PASSWORD: 密码
      WORDPRESS_DB_NAME: blog_xiecoder
    volumes:
      - ./wordpress:/var/www/html

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: blog_xiecoder
      MYSQL_USER: blog_xiecoder
      MYSQL_PASSWORD: 密码
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - ./db:/var/lib/mysql
      - ./dbbackups:/docker-entrypoint-initdb.d # 添加这一行来挂载备份目录

volumes:
  wordpress:
  db:

wordpress存放原来Wordpress的根目录

例如:tar -xzvf web_blog.xiecoder.com_20240922_060002_PBVe0r.tar.gz

dbbackup目录存放backup.sql文件即原来的打包数据库文件

#运行容器
docker-compose up -d

恢复数据库

#进入容器
docker-compose exec db bash

mysql -u 用户名 -p密码

#删除当前数据库
DROP DATABASE blog_xiecoder;

#创建数据库
CREATE DATABASE blog_xiecoder;

#恢复数据库
mysql -u 用户名 -p密码 blog_xiecoder < /docker-entrypoint-initdb.d/backup.sql

修改目录权限及其用户组

用于解决WordPess插件程序更新等问题

#进入容器
docker exec -it <container_name> /bin/bash

#检查权限
ls -la /var/www/html

# 调整目录权限为 755
find /var/www/html -type d -exec chmod 755 {} \;

# 将所有者设置为 www-data(根据你的 Web 服务器的实际用户来设置)
chown -R www-data:www-data /var/www/html

修改WordPress配置文件wp-config.php

define( 'DB_NAME', 'blog_xiecoder' );

/** Database username */
define( 'DB_USER', 'blog_xiecoder' );

/** Database password */
define( 'DB_PASSWORD', '数据库密码' );

/** Database hostname */
define( 'DB_HOST', 'db' );

注意这里DB_HOST得改成db

/* Add any custom values between this line and the stop editing line. */下面插入如下内容

/* Add any custom values between this line and the stop editing line. */

/** 修复用Caddy导致SSL重定向问题. */
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

/* That's all, stop editing! Happy publishing. */

Caddy配置

blog.xiecoder.com {
    reverse_proxy localhost:8080
}

删除冗余

后续便可删除dbbackup目录

再在docker-compose.yml中删除 - ./dbbackups:/docker-entrypoint-initdb.d这一行

重新运行docker-compose up -d

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注