本项目提供了一套基于 Docker 和 Make 的自动化部署方案,用于快速搭建包含 Nginx + Ghost + MySQL 的生产级博客环境,并支持异地备份配置。
.
├── Makefile # 【核心】项目管理入口,包含 setup, up, stop 等命令
├── check_env.sh # 环境预检脚本
├── install_ghost.sh # 配置生成脚本 (由 make setup 自动调用)
├── docker-compose.yml # (自动生成) 容器编排文件
├── nginx.conf # (自动生成) Nginx 配置文件
├── .env # (自动生成) 包含密码等敏感环境变量
├── config.yaml # (自动生成) 包含项目元配置信息
└── content/ # (自动生成) Ghost 博客数据目录
在开始之前,请运行检测脚本以确保服务器满足要求。
chmod +x check_env.sh
./check_env.sh如果输出 "✅ 环境均设置完毕",则继续;否则请按照提示安装缺失软件。
此步骤将引导您输入域名、密码等信息,并生成所有配置文件。
make setup- 交互问答:脚本会询问您的域名、MySQL 密码、异地备份 IP 等。
- 自动生成:回答结束后,会自动创建
.env和docker-compose.yml等文件。 - 启动确认:脚本最后会询问是否立即启动服务。
make up本项目完全通过 make 指令进行管理:
| 命令 | 说明 |
|---|---|
./check_env.sh |
环境检测。检查 Docker, Make 等必要依赖是否已安装。 |
make setup |
初始化。运行配置向导,生成配置文件。 |
make up |
启动服务。读取生成的配置并后台启动 Docker 容器。 |
make stop |
暂停服务。停止容器运行,但保留容器实例。 |
make restart |
重启服务。重启所有容器。 |
make logs |
查看日志。实时滚动显示所有服务的日志。 |
make remove |
清理环境。停止并删除容器,删除生成的配置文件(保留 content 数据)。 |
初始化后,项目根目录会生成以下两个关键文件:
包含 Docker Compose 运行所需的可以直接引用的环境变量。
DOMAIN=blog.example.com
MYSQL_ROOT_PASSWORD=xxxx
GHOST_DB_PASSWORD=xxxx
BACKUP_USER_PASSWORD=xxxx用于记录非环境变量的配置信息,便于自动化运维工具读取。
app:
domain: "blog.example.com"
backup_whitelist_ip: "45.192.109.37"
deployment:
engine: "docker-compose"
created_at: "..."本部署脚本已内置了异地备份支持。
在 make setup 过程中,会询问 备份服务器 IP。服务启动后,MySQL 会自动创建一个名为 backup_user 的账号,并仅允许该 IP 进行连接。
请务必在云服务器的安全组/防火墙中开放 3306 端口给该备份 IP。
- 重置项目:如果您输错了配置,可以运行
make remove清理生成的配置,然后重新运行make setup。 - 数据持久化:
- 博客内容存储在
./content - 数据库存储在
./mysql make remove不会 删除这两个目录,确保数据安全。
- 博客内容存储在