偶然、前々から気になっていたGhostDcokerイメージDockerHubにあったのを見つけたのでさくらVPS上に構築してみました。

やりたいこと

sakura_vps_docker--2-

はい。めっちゃシンプルです。
letsencrypt-proxyはLet's Encryptの更新作業を自動的にやってくれるやつで、必要があれば証明書を更新してくれるコンテナ。
この構成だと今後、新しいドメインやアプリケーションが増えても、コンテナを増やすだけでOKというお手軽構成。コレ大事。

やること

自分の場合、既にさくらVPS上でnginx-proxyとletsencrypt-proxyを動かしているので追加するのはghostコンテナ(青い部分)のみです。
なので、この記事ではこのghostコンテナを構築する話です。

ghost用コンテナの作成

既に公式のイメージがあるので、これをdocker-composeで使います。
本当はdocker-composeは開発向けなのでこれを使った本番運用は避けた方がよさそうです。
が、現在は小規模なので実験的にここではdocker-composeを使って運用します。

ghost用のdocker-compose.yml

version: "3.1"
services:
  ghost:
    image: ghost:1-alpine
    environment:
      VIRTUAL_HOST: example.com,www.example.com
      LETSENCRYPT_HOST: example.com,www.example.com
      LETSENCRYPT_EMAIL: example@example.com
      # see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables
      url: https://example.com
      mail__transport: SMTP
      mail__options__service: 
      mail__options__auth__user: 
      mail__options__auth__pass: 
      database__client: mysql
      database__connection__host: mysql
      database__connection__user: root
      database__connection__password: HOGEHOGE
      database__connection__database: ghost
    restart: always
    logging:
      options:
        max-size: 5m
        max-file: "10"

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: HOGEHOGE
    restart: always
    logging:
      options:
        max-size: 5m
        max-file: "10"

networks:
  default:
    external:
      name: shared

ほぼほぼ、公式の通りに設定します。
urlパラメータを設定しない場合は構築されるghostのトップページ等のリンク先がlocalhostに設定されます。
公開する場合はドキュメントのonly in productionのパラメータを適切に設定しておきます。

なおghostとは直接関係ありませんが、VIRTUAL_HOST、LETSENCRYPT_HOST、LETSENCRYPT_EMAILを適切に設定しておくことで、自動的に対象のドメインがSSL対応してルーティングされます。

コンテナの作成

docker-compose up -d --build

で作成して、

docker ps -a

でexamplecom_ghost_1とexamplecom_mysql_1のコンテナが作成されステータスがUPなのを確認します。

動作確認

VIRTUAL_HOSTに指定したドメインにHTTPSでアクセスして表示されるのを確認します。

管理画面

${url}/ghost/editor/にアクセスすると日本語でセットアップが始まります。