Skip to content

快速参考

  • 由……维护
    Docker 社区

  • 何处获取帮助:
    Docker 社区 Slack、服务器故障、Unix & Linux 或 Stack Overflow

支持的标签及相应的 Dockerfile 链接

快速参考(续)

幽灵

Ghost 是一个用于通过网络和电子邮件时事通讯进行在线发布的独立平台。它内置了用户注册、门控访问和订阅付款(通过 Stripe),以允许你与你的受众建立直接关系。它速度快、用户友好,并在 Node.js 和 MySQL8 上运行。

Ghost.org)

logo

如何使用此图像

这将启动一个在默认的 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:3001http://localhost:3001/ghost 访问你的新站点以访问 Ghost 管理界面(或者分别在 http://host-ip:3001http://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-ForX-Forwarded-HostX-Forwarded-Protohttps )头的反向代理来运行。

以下示例展示了使用 MySQL 运行所需的一些必要配置。有关更多详细信息,请参阅 Ghost 的“配置选项”文档。

通过 docker-composedocker 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:

Try in PWD

运行 docker stack deploy -c stack.yml ghost (或 docker-compose -f stack.yml up ),等待其完全初始化,然后访问 http://swarm-ip:8080http://localhost:8080http://host-ip:8080 (视情况而定)。

图像变体

ghost 图像有多种类型,每种都针对特定的用例而设计。

ghost:<version>

这是事实上的镜像。如果你不确定自己的需求是什么,你可能想要使用这个。它被设计既可用作一次性容器(挂载你的源代码并启动容器以启动你的应用程序),也可用作构建其他镜像的基础。

ghost:<version>-alpine

此镜像基于流行的 Alpine Linux 项目,在 alpine 官方镜像中可用。Alpine Linux 比大多数发行版基础镜像小得多(约 5MB),因此通常会生成更精简的镜像。

当尽可能小的最终镜像大小是你主要关心的问题时,这个变体很有用。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及其同类,所以软件通常会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的镜像的一些优缺点比较的更多讨论,请参阅此 Hacker News 评论线程。

为了最小化镜像大小,在基于 Alpine 的镜像中包含额外的相关工具(例如 gitbash )是不常见的。使用此镜像作为基础,在你自己的 Dockerfile 中添加你需要的东西(如果你不熟悉,可查看 alpine 镜像描述以获取如何安装软件包的示例)。

许可证

查看此映像中包含的软件的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 ghost/ 目录中找到。

对于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用都符合其中包含的所有软件的任何相关许可证。