
Ghost 是一个独立的在线发布平台,支持通过网页和电子邮件通讯进行内容发布。它内置了用户注册、访问权限控制和订阅支付功能(通过 Stripe 集成),让你能够与受众建立直接联系。Ghost 运行速度快、用户友好,基于 Node.js 和 MySQL8 构建。
!logo
6.3.1, 6.3, 6, latest Dockerfile6.3.1-alpine, 6.3-alpine, 6-alpine, alpine Dockerfile5.130.5, 5.130, 5 Dockerfile5.130.5-alpine, 5.130-alpine, 5-alpine Dockerfile以下命令将启动一个 Ghost 开发实例,默认监听 2368 端口(Ghost 标准端口):
console$ docker run -d --name some-ghost -e NODE_ENV=development ghost
如需从主机直接访问实例(无需通过容器 IP),可使用端口映射:
console$ docker run -d \ --name some-ghost \ -e NODE_ENV=development \ -e url=http://localhost:3001 \ # 设置访问 URL -p 3001:2368 \ # 主机端口:容器端口 ghost
成功启动后,可通过 http://localhost:3001 访问网站,通过 http://localhost:3001/ghost 访问管理后台(若使用远程服务器,将 localhost 替换为服务器 IP)。
Ghost 的内容数据(如文章、图片等)需持久化存储以避免容器重启后丢失。可通过绑定主机目录或 Docker 卷实现。
以下示例使用 Alpine 版本镜像,并将主机目录挂载到容器内的内容目录:
console$ docker run -d \ --name some-ghost \ -e NODE_ENV=development \ -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \ # SQLite 数据库路径(仅开发模式) -p 3001:2368 \ -v /path/to/ghost/blog:/var/lib/ghost/content \ # 主机目录:容器内容目录 ghost:alpine
注意:
database__connection__filename仅在开发模式下有效,用于指定 SQLite 数据库文件路径,必须设置为持久化目录内的可写路径。生产模式下不支持 SQLite,需使用外部 MySQL 服务器(见 5.7 节)。
推荐使用 Docker 命名卷而非直接绑定主机路径,更便于管理:
console$ docker run -d \ --name some-ghost \ -e NODE_ENV=development \ -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \ -p 3001:2368 \ -v some-ghost-data:/var/lib/ghost/content \ # Docker 卷:容器内容目录 ghost
所有 Ghost 配置参数(如 url)均可通过环境变量指定。配置键与环境变量的转换规则为:嵌套键使用双下划线(__)连接(例如 database.connection.host 对应 database__connection__host)。详细配置说明见 Ghost ***文档。
示例:设置网站 URL 和数据库连接参数
console$ docker run -d \ --name some-ghost \ -e NODE_ENV=development \ -e url=[***] \ -e database__connection__host=db \ -e database__connection__user=root \ ghost
提交 Ghost 相关 issue 时可能需要提供 Node.js 版本,可通过以下命令获取:
console$ docker exec <container-id> node --version vX.Y.Z # Node.js 版本输出
尽管镜像中包含 Ghost-CLI,但许多 CLI 命令在 Docker 环境中无法正常工作,也非设计用于此场景。详细说明见 docker-library/ghost#156。
生产环境下,Ghost 要求使用外部 MySQL 数据库(不支持 SQLite),并需配置 HTTPS 和反向代理(需设置 X-Forwarded-For、X-Forwarded-Host、X-Forwarded-Proto 头)。
以下 compose.yaml 配置启动 Ghost 生产实例和 MySQL 数据库:
yamlservices: ghost: image: ghost:5-alpine # 使用 Alpine 版本 restart: always ports: - 8080:2368 # 可根据需求修改主机端口 environment: # 数据库配置(需与 MySQL 服务参数对应) database__client: mysql database__connection__host: db database__connection__user: root database__connection__password: example # MySQL 密码 database__connection__database: ghost # 数据库名称 url: http://localhost:8080 # 生产环境需替换为实际域名(如 [***] # NODE_ENV: development # 如需开发模式,取消注释此行(默认生产模式) volumes: - ghost:/var/lib/ghost/content # 持久化 Ghost 内容 db: image: mysql:8.0 # Ghost 要求 MySQL 8.0 restart: always environment: MYSQL_ROOT_PASSWORD: example # 与 Ghost 的 database__connection__password 一致 volumes: - db:/var/lib/mysql # 持久化 MySQL 数据 volumes: ghost: # Ghost 内容卷 db: # MySQL 数据卷
启动服务:
console$ docker compose up -d
服务初始化完成后,通过 http://localhost:8080 访问网站(生产环境需配置域名和 HTTPS)。
ghost:<version>(默认镜像)基于 Debian 系统构建,是最常用的镜像版本。适用于大多数场景,兼容性好,包含必要的系统工具。如无特殊需求,推荐使用此版本。
ghost:<version>-alpine(Alpine 版本)基于 Alpine Linux 构建,镜像体积显著更小(Alpine 基础镜像约 5MB),适合对镜像大小有严格要求的场景。
注意:Alpine 使用 musl libc 而非 glibc,部分依赖 glibc 的软件可能存在兼容性问题。如需使用额外工具(如 git、bash),需在 Dockerfile 中手动安装。
使用本镜像时,需确保遵守所有包含软件的许可证要求。
amd64、arm32v6、arm32v7、arm64v8、ppc64le、s390x(详细信息)来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速