使用 Docker Compose 高效部署 Ghost 博客
1. 为什么选择 Docker 部署 Ghost?
Ghost 是一款非常强大且现代的开源博客平台,但它的原生安装(基于 Node.js)对环境依赖较多,稍有不慎就会遇到版本冲突。使用 Docker Compose 部署,可以把 Ghost 主程序和 MySQL 数据库完美隔离,实现一键启动、方便迁移、无痛升级。
本文将分享一份经过生产环境验证的 docker-compose.yaml 配置文件,并针对 MySQL 8.0 的常见认证报错进行优化。
2. 环境准备与 Docker 安装
在 Ubuntu/Debian 系统中,建议使用官方推荐的现代方式安装 Docker 社区版及 Compose 插件,避免因版本过旧导致命令不兼容:
# 更新系统软件包
sudo apt update
# 安装 Docker 及 Compose 插件
sudo apt install docker.io docker-compose-plugin -y
安装完成后,你可以通过 docker compose version 来验证是否安装成功。
3. 编写 docker-compose.yaml 配置文件
在服务器上创建一个独立目录(例如 mkdir ghost-blog && cd ghost-blog),然后创建 docker-compose.yaml 文件。
注意:请将配置文件中类似 <你的_XXX> 的注释部分替换为你自己的实际安全密码和配置。
services:
db:
image: mysql:8.0
restart: always
# 核心避坑:强制指定传统密码认证方式,防止 Ghost 无法连接 MySQL 8.0
command: --default-authentication-plugin=mysql_native_password
environment:
# 数据库名称
MYSQL_DATABASE: ghost
# 数据库普通用户名
MYSQL_USER: ghost
# 【安全提示】请替换为强随机密码,勿使用弱口令
MYSQL_PASSWORD: "<填写你的本地数据库安全密码_例如_gHoSt_789_pAsS>"
# 【安全提示】请替换为强随机的管理员密码
MYSQL_ROOT_PASSWORD: "<填写你的数据库ROOT安全密码_例如_mYsQl_rOoT_123>"
volumes:
# 持久化存储数据库数据
- ./mysql_data:/var/lib/mysql
ghost:
image: ghost:5-alpine # 建议锁定大版本,alpine版本体积更小、更安全
restart: always
ports:
- "2368:2368"
environment:
database__client: mysql
database__connection__host: db
database__connection__user: ghost
# 【核心注意】这里的密码必须与上方服务的 MYSQL_PASSWORD 完全一致
database__connection__password: "<填写你的本地数据库安全密码_与上方相同>"
database__connection__database: ghost
# 博客的正式访问 URL(测试阶段可填 http://服务器IP:2368)
# 一旦配置了 HTTPS 反向代理,务必改为 https://你的域名
url: "https://<你的正式访问域名_例如_blog.example.com>"
# 邮件发送配置(以163网易邮箱为例)
mail__transport: SMTP
mail__options__host: smtp.163.com
mail__options__port: 465
mail__options__secureConnection: "true" # 465端口通常为 true
mail__options__auth__user: "<你的发件邮箱地址_例如_username@163.com>"
# 【安全提示】此处填写的是邮箱服务商提供的“客户端授权码”,非邮箱登录密码
mail__options__auth__pass: "<你的邮箱SMTP授权码_勿填登录密码>"
mail__from: "博客管理员 <<你的发件邮箱地址_与上方相同>>"
volumes:
# 持久化存储博客的图片、主题和内容
- ./ghost_content:/var/lib/ghost/content
depends_on:
- db
4. 一键启动与常用运维命令
① 启动博客
在 docker-compose.yaml 文件的同级目录下,执行以下命令在后台启动服务:
docker compose up -d
② 查看运行状态与排查日志
如果启动后网页无法访问,可以通过以下命令查看 Ghost 的实时运行日志,重点排查数据库连接和邮件配置:
# 查看实时日志
docker compose logs -f ghost
③ 停止服务
如果需要修改配置文件,可以安全地停止容器(由于配置了 volumes,你的数据和文章不会丢失):
docker compose down