快速参考
-
由……维护
Docker 社区 -
何处获取帮助:
Docker 社区 Slack、服务器故障、Unix & Linux 或 Stack Overflow
支持的标签及相应的 Dockerfile 链接
快速参考(续)
-
支持的架构:(更多信息)
amd64,arm32v6,arm32v7,arm64v8,ppc64le,s390x -
已发布的图像工件详细信息:
仓库信息 仓库的repos/ghost/目录(历史)
(图像元数据、传输大小等) -
图像更新:
官方镜像仓库的library/ghost标签
官方镜像仓库的library/ghost文件(历史记录) -
此描述的来源:
文档库的ghost/目录(历史)
幽灵
Ghost 是一个用于通过网络和电子邮件时事通讯进行在线发布的独立平台。它内置了用户注册、门控访问和订阅付款(通过 Stripe),以允许你与你的受众建立直接关系。它速度快、用户友好,并在 Node.js 和 MySQL8 上运行。

如何使用此图像
这将启动一个在默认的 Ghost 端口 2368 上监听的 Ghost 开发实例。
$ docker run -d --name some-ghost -e NODE_ENV=development ghost
自定义端口
如果您希望能够从主机访问实例而无需容器的 IP,则可以使用标准端口映射:
$ docker run -d --name some-ghost -e NODE_ENV=development -e url=http://localhost:3001 -p 3001:2368 ghost
如果一切顺利,你将能够在 http://localhost:3001 和 http://localhost:3001/ghost 访问你的新站点以访问 Ghost 管理界面(或者分别在 http://host-ip:3001 和 http://host-ip:3001/ghost )。
升级 Ghost
在升级主要版本之前,你需要确保你正在运行 Ghost 的最新次要版本。否则,你可能会遇到数据库错误。
要升级你的 Ghost 容器,你需要将数据挂载到前一个容器中的适当路径(见下文):从管理面板导入你的内容,停止容器,然后将你的内容重新挂载到你要升级到的后续容器;然后你可以从管理面板导出你的内容。
有状态的
挂载你现有的内容。在这个例子中,我们也使用基于 Alpine Linux 的镜像。
$ 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 /path/to/ghost/blog:/var/lib/ghost/content \
ghost:alpine
注意: database__connection__filename 仅在开发模式下有效,并且是 SQLite 数据库文件的位置。如果使用开发模式,应将其设置为持久文件夹(绑定挂载或卷)内的可写路径。它在生产模式下不可用,因为需要外部 MySQL 服务器(见下面的 docker-compose 示例)。
Docker 卷
或者,你可以使用一个命名的 Docker 卷来代替直接的主机路径用于 /var/lib/ghost/content :
$ 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 \
ghost
配置
所有 Ghost 配置参数(例如 url )都可以通过环境变量来指定。有关允许的配置以及如何将嵌套配置键转换为适当的环境变量名称的详细信息,请参阅 Ghost 文档:
$ docker run -d --name some-ghost -e NODE_ENV=development -e url=http://some-ghost.example.com ghost
(在下面列出的 stack.yml 中有进一步的配置示例。)
Node.js 的版本是什么?
当在 https://github.com/TryGhost/Ghost/issues 打开一个工单时,有必要知道正在使用的 Node.js 的版本:
$ docker exec <container-id> node --version
[node version output]
关于 Ghost-CLI 的说明
虽然 Docker 镜像确实有 Ghost-CLI 可用,并且确实使用了它的一些命令来设置基础 Ghost 镜像,但许多其他 Ghost-CLI 命令将无法正确工作,并且实际上也不是设计/打算用于此目的。有关更多信息,请参阅 docker-library/ghost#156(评论)。
生产模式
要在生产环境中运行 Ghost,你还需要使用 MySQL 8、https 以及配置了适当的 X-Forwarded-For 、 X-Forwarded-Host 和 X-Forwarded-Proto ( https )头的反向代理来运行。
以下示例展示了使用 MySQL 运行所需的一些必要配置。有关更多详细信息,请参阅 Ghost 的“配置选项”文档。
通过 docker-compose 或 docker stack deploy
示例 docker-compose.yml 用于 ghost :
version: '3.1'
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
- 8080:2368
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: example
database__connection__database: ghost
# this url value is just an example, and is likely wrong for your environment!
url: http://localhost:8080
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
#NODE_ENV: development
volumes:
- ghost:/var/lib/ghost/content
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db:/var/lib/mysql
volumes:
ghost:
db:
运行 docker stack deploy -c stack.yml ghost (或 docker-compose -f stack.yml up ),等待其完全初始化,然后访问 http://swarm-ip:8080 、 http://localhost:8080 或 http://host-ip:8080 (视情况而定)。
图像变体
ghost 图像有多种类型,每种都针对特定的用例而设计。
ghost:<version>
这是事实上的镜像。如果你不确定自己的需求是什么,你可能想要使用这个。它被设计既可用作一次性容器(挂载你的源代码并启动容器以启动你的应用程序),也可用作构建其他镜像的基础。
ghost:<version>-alpine
此镜像基于流行的 Alpine Linux 项目,在 alpine 官方镜像中可用。Alpine Linux 比大多数发行版基础镜像小得多(约 5MB),因此通常会生成更精简的镜像。
当尽可能小的最终镜像大小是你主要关心的问题时,这个变体很有用。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及其同类,所以软件通常会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的镜像的一些优缺点比较的更多讨论,请参阅此 Hacker News 评论线程。
为了最小化镜像大小,在基于 Alpine 的镜像中包含额外的相关工具(例如 git 或 bash )是不常见的。使用此镜像作为基础,在你自己的 Dockerfile 中添加你需要的东西(如果你不熟悉,可查看 alpine 镜像描述以获取如何安装软件包的示例)。
许可证
查看此映像中包含的软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 ghost/ 目录中找到。
对于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用都符合其中包含的所有软件的任何相关许可证。
