docker安装最小化的 Typecho 示例,安装前看看目录结构,如需要修改,先研究一下。
Debian 11、12系统适用,与其它方式安装不冲突
一、目录结构
/home/html/typecho/typecho1/
├── docker-compose.yml
├── Caddyfile
├── public/ (网站文件存放目录)
├── php/
│ └── Dockerfile
└── data/ (安装后数据库文件会自动生成)
二、安装前准备:
相关升级
apt update && apt upgrade -y && apt install -y curl wget unzip zip
安装好 docker compose
curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin
三、创建目录结构和需要文件
1、创建目录
sudo mkdir -p /home/html/typecho/typecho1/php/
sudo mkdir -p /home/html/typecho/typecho1/public/
sudo chown -R www-data:www-data /home/html/typecho/typecho1/public/
sudo chmod -R 755 /home/html/typecho/typecho1/public/
touch /home/html/typecho/typecho1/docker-compose.yml
touch /home/html/typecho/typecho1/Caddyfile
touch /home/html/typecho/typecho1/php/Dockerfile
2、文件修改,尽量在本地修改后上传,或用记事本打开粘贴下面的内容
a、 docker-compose.yml 文件【已测试正常】, 一定要修改数据库中的两个密码
services:
caddy:
image: caddy:2-alpine
container_name: caddy_typecho1
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./public:/srv
- caddy_data:/data
- caddy_config:/config
depends_on:
- php
php:
build: ./php
container_name: php_typecho1
volumes:
- ./public:/srv
depends_on:
- db
db:
image: mariadb:10.7
container_name: mariadb_typecho1
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: typecho1
MYSQL_USER: typecho1
MYSQL_PASSWORD: typechopass123
volumes:
- ./data:/var/lib/mysql
volumes:
caddy_data:
caddy_config:
b、Caddyfile文件【已测试正常】
typecho1域名,域名要提前解析好,不打开小黄云
web1.example.com {
root * /srv
php_fastcgi php:9000
file_server
}
c、php/Dockerfile【已测试正常】
FROM php:8.1-fpm
RUN docker-php-ext-install pdo pdo_mysql mysqli
WORKDIR /srv
d、下载官方 Typecho 或上传后解压【已测试正常】
cd /home/html/typecho/typecho1/public/
wget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zip
unzip typecho.zip
rm typecho.zip
四、以上步骤完成后启动
cd /home/html/typecho/typecho1/
docker-compose up -d
五、打开网站安装,安装时如会出现 uploads 权限问题,给予权限,其它小问题按提示解决或刷新网页重新安装
数据库地址: db 或用默认
数据库名: typecho1
用户名: typecho1
密码: typechopass123
⚡ 如果你要再装第二个 Typecho,只需要复制一份 /home/html/typecho/typecho1/ 为 /home/html/typecho/typecho2/,然后在 docker-compose.yml 里修改:
容器名(caddy_typecho2、php_typecho2、mariadb_typecho2)
数据库名(typecho2)
端口映射(比如 8080:80)
以此类推
六、🚀 迁移步骤(最简洁)
旧 VPS 打包,打包整个项目目录,包括数据库。
cd /home/html/typecho/ tar -czvf typecho1_backup.tar.gz typecho1
把备份传输到新 VPS或手动下载后再上传到新vps上
scp /home/html/typecho/typecho1_backup.tar.gz root@新VPS:/root/
新 VPS 解压 & 启动
cd /home/html/typecho/ mkdir -p /home/html/typecho/ mv /root/typecho1_backup.tar.gz /home/html/typecho/ tar -xzvf typecho1_backup.tar.gz
进入目录并启动:
cd /home/html/typecho/typecho1
docker-compose up -d
- 修改域名解析
把域名 A 记录指向新 VPS IP,等 Caddy 自动申请 SSL 证书就可以访问了
七、Typecho 本身对域名是 支持更换的
1、改成新的域名:
Caddy 配置
new.example.com {
root * /srv
php_fastcgi php:9000
file_server
}
重启:
docker-compose down
docker-compose up -d
- Typecho 配置
Typecho 的域名配置存在数据库里(options 表的 siteUrl 字段)。
你需要进入数据库修改一下:
方法 A:进容器改
docker exec -it mariadb_typecho1 mysql -u typecho1 -p typechopass123DDD typecho1
进入数据库后执行:
UPDATE typecho_options SET value='https://new.example.com/' WHERE name='siteUrl';
方法 B:后台改
如果你还能登录 Typecho 后台:
控制台 → 设置 → 基本 → 站点地址,直接改成新域名即可。
方法 C:备份好数据,全新安装后恢复,最简单
- 内容里的绝对链接
✅ 总结
这种方式安装,数据库数据 已经在 data/ 挂载目录里,所以无需单独 mysqldump 导出导入。
整个 typecho1 项目文件夹就是完整环境,直接打包迁移即可。
在新 VPS 上只需要 docker-compose up -d,就能恢复完整博客。
评论 (0)