
library/ghostGhost 是一个独立的在线发布平台,支持通过网页和电子邮件通讯进行内容发布。它内置了用户注册、访问权限控制和订阅支付功能(通过 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(详细信息)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务