偶然、前々から気になっていたGhostのDcokerイメージがDockerHubにあったのを見つけたのでさくらVPS上に構築してみました。
やりたいこと
はい。めっちゃシンプルです。
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/にアクセスすると日本語でセットアップが始まります。