镜像部署指南:Ghost Blog

Ghost

还在用 WordPress 做你的博客站点,你就 OUT 了!速度切换到 Ghost,用 Markdown 写出最有逼格的技术博客吧。这个出自于 WordPress 前 UX 部门开发者/设计师 John O'Nolan 之手的博客系统,自 2012 年诞生之日起就被冠于类似 "WordPress Killer",the "new direction of blogging","the first exciting thing to happen to blogging in years" 之类的头衔。

关于 WordPress 和 Ghost 的比较大家可以参见 WordPress VS Ghost(英文)。

如果你动心了的话,马上用 1 分钟在 DaoCloud 上部署一个属于你的高逼格 Ghost 博客吧!

版本

该镜像与官方镜像同步。

部署到自有主机

从 Ghost 镜像中创建容器

  

 

 

 

将容器部署到我的主机,在运行环境中选择我的主机,您可以选择自己的主机或者购买一台主机,您也可以使用 DaoCloud 提供的胶囊主机 ,快速试用这一项功能。


 

使用外部的 MySQL 数据库


注意

使用自有主机必须使用外部数据库

当您使用外部的 MySQL 数据库时需要设置下列所有环境变量。


您可以通过指定下列几个环境变量的值来使用外部的 MySQL 数据库:

  •  GHOST_MYSQL_HOST 数据库主机地址
  •  GHOST_MYSQL_DATABASE 数据库名
  •  GHOST_MYSQL_USER 数据库用户名
  •  GHOST_MYSQL_PASSWORD 数据库密码

可以参考以下例子:

$ docker run -d -e MYSQL_ROOT_PASSWORD=example -e MYSQL_USER=ghost -e MYSQL_PASSWORD=ghost -e MYSQL_DATABASE=ghost -p 3306:3306 --name mymysql mysql    # 启动了一个 MySQL 实例并暴露端口 3306
$ docker run -d -e GHOST_MYSQL_HOST=<mysql_host_address> -e GHOST_MYSQL_USER=ghost -e GHOST_MYSQL_PASSWORD=ghost -e GHOST_MYSQL_DATABASE=ghost -p 2368:2368 dghost    # 通过环境变量指定要使用数据库的连接方式

设置好环境变量,点击右下角立即部署。


 

启动容器并访问 Ghost:

点击主机地址,跳到自有集群界面,提示位置的外网地址,就是用户用来外网访问地址。


 

使用 Stack 功能部署 Ghost 于自有主机

您可以使用 Stack 功能将 Ghost 快速部署在您的自有主机上,您可以参考下面的 docker-compose.yml 文件:

这里使用 Volume 功能挂载宿主机上的 content 目录至容器内来做持久化储存。

ghost:
  image: daocloud.io/daocloud/dao-ghost:latest
  links:
    - db:mysql
  ports:
    - "2368"
  volumes:
    - /<path_to_your_ghost>/content:/usr/src/ghost/content
  environment:
    - GHOST_ROOT_URL=http://<your-blog-url>
  restart: always
db:
  image: mysql
  environment:
    - MYSQL_ROOT_PASSWORD=example
    - MYSQL_DATABASE=ghost
    - MYSQL_USER=ghost
    - MYSQL_PASSWORD=ghost_db_password
  restart: always

注意

由于上传的文件如图片等会保存在容器中,容器重新部署可能会导致上传文件的丢失,因此不建议您用 Ghost 存储重要文件,但是当您部署于自有主机上时可以通过 Volume 功能挂载宿主机上的目录至容器来做持久化储存。

您需要设置 GHOST_ROOT_URL 变量来让 Ghost 能正确配置其内部的链接。

Ghost 默认把图片传在容器内,由于容器是无状态的,因此每次容器重启就回丢掉所有的内容。DaoCloud 暂时禁用了图片上传功能,改为使用 url 的方式。如果您使用 Volume 的话,可以将 Volume 挂载到 Ghost 对应的图片目录然后开启这个功能,方法其实就是将其 config.js 文件里的 fileStorage: false 改为 true,不过您可能需要 build 自己的镜像,您可以参考这个项目 https://github.com/DaoCloud/ghost 本Ghost 镜像就是来源于此。另外,挂载时要注意路径,不要挂载到 /content, 而是 /content/images。