Ubuntu利用docker compose搭建Typecho博客
登录Ubuntu
- 使用SSH工具登录Ubuntu的root用户
1 | sudo -i |
创建文件夹
- 创建相关文件夹并赋予777权限
1 | mkdir -m 777 -p typecho/nginx/conf.d |
配置ddns-go
- 建立相关文件夹
1 | # 先确保目录存在(如果已存在可跳过) |
- 拉取并运行ddns-go
1 | sudo docker run -d --name ddns-go --restart=always -p 9876:9876 --net=host -v ~/ddns-go:/root jeessy/ddns-go |
- 登录并配置ddns-go
1 | 登录地址:http://你Ubuntu的IP地址:9876,例如http://192.168.200.25:9876 |
上传证书文件
先上传证书到ubutu的一个文件夹,然后拷贝证书文件到建立的文件夹typecho/nginx/certs
内
例如先用SSH工具上传到/home/zhang-u/下载
,然后执行拷贝
1 | > cp /home/zhang-u/下载/_.lelez.site.key ~/typecho/nginx/certs |
配置typecho.conf
1 | # HTTPS 配置 |
- 上传
typecho.conf
到~/typecho/nginx/conf.d
内
先上传typecho.conf
到Ubuntu
的/home/zhang-u/下载
文件夹,并拷贝这个文件到typecho/nginx/conf.d
内
1 | cp /home/zhang-u/下载/typecho.conf ~/typecho/nginx/conf.d |
上传后假如需要修改,用下边的命令
1 | nano ~/typecho/nginx/conf.d/typecho.conf |
在里边修改后按ctrl+x,然后回车,然后yes保存退出
或者ctrl+o后回车,然后yes保存退出
配置docker-compose.yml
1 | # version: '3.8' |
注意我docker compose里的配置全部写成了绝对路径
/home/zhang-u/typecho/
,而不是短路径~/typecho/
先上传docker-compose.yml
到Ubuntu
的/home/zhang-u/下载
文件夹,并拷贝这个文件到typecho/
内
1 | cp /home/zhang-u/下载/docker-compose.yml ~/typecho |
上传后假如需要修改,用下边的命令
1 | nano ~/typecho/docker-compose.yml |
在里边修改后按ctrl+x,然后回车,然后yes保存退出
或者ctrl+o后回车,然后yes保存退出
运行
1 | docker compose up -d |
假如报错说权限问题,请执行以下命令
1
2sudo chown -R www-data:www-data /home/zhang-u/typecho/uploads
sudo chown -R www-data:www-data /home/zhang-u/typecho/usr
权限通常是因为Typecho 容器里的 Apache/PHP 是以
www-data
用户运行,所以宿主机挂载的目录必须属于www-data
才能写
其他
任何修改要使其生效,修改后去执行下边命令
1 | docker compose down |
以上命令需在docker-compose.yml文件所在目录执行才能生效
- 题外话 - 关于复制粘贴
在 Linux 中,cp
命令默认只能复制文件,不能复制目录。如果你要复制一个目录及其内容,必须加上 -r
参数。
例如:
1 | cp /source/dir /destination/ |
这个命令会报错,因为 /source/dir
是一个目录,而你没加 -r
。
正确的写法是:
1 | cp -r /source/dir /destination/ |
你想把 /home/zhang-u/typecho/usr/uploads/2025/09/*
这些子文件夹(比如 04、05、07、08)拷贝到 /home/zhang-u/typecho/uploads/2025/
,你应该这样写:
1 | cp -r /home/zhang-u/typecho/usr/uploads/2025/09/* /home/zhang-u/typecho/uploads/2025/ |
⚠️ 注意:
- 使用
*
表示匹配所有子文件夹和文件。- 如果目标路径
/home/zhang-u/typecho/uploads/2025/
不存在,需要先创建它。- 如果你只想复制某个特定文件夹,比如
04
,就写成:
1 cp -r /home/zhang-u/typecho/usr/uploads/2025/09/04 /home/zhang-u/typecho/uploads/2025/
📌 小贴士
确保目标目录存在:
1
mkdir -p /home/zhang-u/typecho/uploads/2025
检查权限: 确保你有读取源目录和写入目标目录的权限。如果提示权限不足,可以使用
sudo
:1
sudo cp -r /home/zhang-u/typecho/usr/uploads/2025/09/* /home/zhang-u/typecho/uploads/2025/
避免覆盖已有文件? 如果不想覆盖,可以用
-n
参数:1
cp -rn /home/zhang-u/typecho/usr/uploads/2025/09/* /home/zhang-u/typecho/uploads/2025/
✅ 总结
你的错误是因为 复制目录时缺少 -r
参数。
👉 解决方法:加上 -r
即可!
1 | cp -r /home/zhang-u/typecho/usr/uploads/2025/09/* /home/zhang-u/typecho/uploads/2025/ |
试试看吧!✅