2025年,使用docker在Ubuntu主机上部署Ghost博客记录
简要记录一下我使用Docker搭建Ghost博客的过程。主机上提前安装了1panel面板。

如今这世道,AI 如同春日繁花,处处皆是,ChatGPT,DeepSeek,Grok大大兴其道。出门行路,问个方向,AI 导航便在手机里咿咿呀呀地指手画脚;搜个物件,AI 搜索引擎瞬间蹦出一堆答案,花花绿绿,晃得人眼晕;写篇文章,画个丹青,AI 也能掺和一脚,仿若自己成了那妙笔生花的谪仙。
可这 AI,虽说便利,却也着实让人嫌弃。写东西时,本想让它润色添彩,哪晓得它东拼西凑,尽是些陈词滥调,毫无生气,如同那死水微澜,激不起半点创作的兴致。它推荐的东西,千篇一律,全然不顾你真正的心意,像个不懂事的稚童,一个劲儿地往你怀里塞它自以为好的玩意儿,却不知你真正珍视的,它压根儿就瞧不上眼。
越想越觉得,这 AI 再神通广大,也替代不了人心中的那点灵犀。于是,我决定重新拿起笔(虽是敲打键盘),用自己的眼睛去观察这世间万物,用自己的心去感悟生活的酸甜苦辣,把那些点点滴滴的感悟都记录下来。
从今日起,我要抛开对 AI 的依赖,重新开始尝试记录生活,找回那份久违的创作的宁静与欢喜。工欲善其事必先利其器,和很多人一样,我的记录也是从“先注册一个域名”开始的。域名注册和服务器搭建的过程在这里不做详述了,简要记录一下我使用Docker搭建Ghost博客的过程。
<!--more-->
本次安装采用了不太时兴的 docker pull & run 方式,主机上安装docker的过程因为比较简单故在此省略。
主机使用了BWG家的GIA主机,去年1024节时以 $34.50购入,配置信息如下(题外话:BWG家的主机稳定性还是非常不错的,我从2016年就开始使用他家的主机,已经稳定运行了快10年,需要的伙伴们可以使用以下链接注册:https://bwh89.net/aff.php?aff=8343)

准备工作
确保你的主机上安装了1panel面板,如果没有请参考下面的链接在主机上安装1panel面板,并且使用1panel面板安装了Openresty服务器。


1.反向代理
在1panel管理面板中创建网站(如果无法新建网站,请按照提示安装服务器)→反向代理,将域名替换为你自己的域名后,按照下图填写配置信息,代理地址写127.0.0.1:2368(端口号可以自定,但是要注意和后续启动容器时配置的端口要保持一致):

完成以上设置后,你可以使用1panel自带的Docker容器管理工具安装Ghost博客,也可以使用SSH工具登录主机,然后按照如下过程安装和启动Ghost博客。
一、 拉取 Ghost 镜像
- 查看 Docker 版本
docker -v
# 输出 Docker version 27.4.0, build bde2b89
- 从 Docker Hub 拉取 Ghost 官方镜像的命令
- 检索ghost镜像
docker search ghost
# 输出:
# NAME DESCRIPTION # STARS OFFICIAL
# ghost Publish by web and email newsletter, with me… 1767 [OK]
# bitnami/ghost Bitnami container image for Ghost 41
# ......
- 拉取镜像
根据检索结果,选择官方镜像拉取:
docker pull ghost
查看已下载的镜像:
docker images
# 输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
ghost latest 0774ff88e9dc 36 hours ago 564MB
1panel/openresty 1.21.4.3-3-3-focal 47fabb474247 8 months ago 667MB
二、 启动 Ghost 容器
- 使用 docker run 命令启动 Ghost 容器
docker run -d --name ghost -e NODE_ENV=development -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' -e url=https://asipilin.net -p 2368:2368 -v /home/ghost:/var/lib/ghost/content ghost
# -e 环境参数释义
# NODE_ENV 运行模式,可选 development 或者 production
# database__connection__filename 数据库连接信息,这里默认使用sqlite
# url 网站地址
# -v 挂载
# 将容器上的/var/lib/ghost/content目录挂载到主机/home/ghost目录下
# -p 端口映射
# 格式:主机端口:容器端口 如2368:2368
执行完命令会输出容器对应的卷名(十六进制):
beb5a43d6a5dd9250e3282504b155387dc6a149208ba8e7b1f454f620211705c
- 查看容器运行状态
docker container ls
# 输出:
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# beb5a43e6a5d ghost "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:2368->2368/tcp, [::]:2368->2368/tcp ghost
能够看到以上信息,说明容器运行成功。
三、 访问与配置 Ghost 博客
- 通过浏览器访问 Ghost 博客后台
在浏览器中输入主机http://ip:2368 即可访问Ghost博客,此时页面中会显示网站内容正在更新,请用户稍后访问的信息,不用管他,继续访问http://ip:2368 /ghost/可打开Ghost博客后台进入配置界面。

- 初次配置博客(如设置管理员账号、站点标题等)
- 配置管理员账号,在下面的表单中分别输入站点标题,用户信息以及密码,点击 Create account & start publishing 按钮完成初始用户的创建。

用户创建完成后即可看到后台引导页,可根据引导页提示一步步完成博客的初始设置:

详细的配置方法和建议可参考如下 Ghost官方的帮助说明:

Ghost官方提供的有关博客配置的帮助文档
四、 常见问题与注意事项
- 容器启动失败的常见原因及解决方法
解决方法:1.查看端口是否被占用;2.检查容器名是否已经被占用。
2.数据备份与恢复的注意事项
解决方法:1.注意挂载目录时,严格按照上述说明挂载目录。