毎度ガバガバなイメージの更新をしています。毎回技術系のブログはunsweets.logに書こうかなあとかぼやきつつ、相変わらずしっかり書くつもりもないので、Ghostに関してはこちらに書いていこうと思います。今のところ。
さて、久々にブログを更新しようかなと思いデスクトップクライアントを起動したら、Ghostの更新がきてることに気が付きました。斜め読みして1が出たのか〜ふんふんと思ってよく見てみたら最新バージョンは1.5まで行ってました。まだ1.0.0が出てから23日ほどしか経ってないのにめちゃめちゃ早い。
例によってメジャーバージョンの変更ですので、Breaking changeと呼ばれる破壊的な変更があります。
今回のアップグレードではマウント先のパスが異なっており、うまくvolumes-fromオプションを使って移行することはできないようでした。
そもそも不完全とは
- ユーザーアカウントのインポートが完全ではなく、一部プロフィールデータが吹っ飛んだため。
手順
- 元のコンテナの設定画面から記事をExport。おそらくjsonデータがダウンロードされる
docker pull ghost
とかで最新版Ghostを取得するdocker run
時にマウントするボリュームを指定する。Docker hubにあるGhost 1.x.xのとこのコマンドのように。
$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content ghost:1-alpine
0.x系と違うのは、/var/lib/ghost
が/var/lib/ghost/content
に
なったことですね。- 元のコンテナはこの辺で一旦止めておく(マウントしてるディレクトリは消さないように)。
- 新しいGhostを起動したら一旦初期のセットアップを済ませてしまう(おそらくここがユーザーアカウントインポートに引っかかった原因)。
- 設定画面にいったら、LabsからImport contentを選択。Linux環境だからか知りませんがファイル選択ダイアログがなぜかzipにフィルタリングされてて最初「アレ?」ってなった。全てのファイルにして、先ほどダウンロードしたjsonを選択してアップロード。記事が取り込まれる(ここでインポート警告が出る)。
- 元コンテナのマウントディレクトリの
/images
データを新しいコンテナの/images
にコピー。 - 新しいコンテナの設定ファイルはコンテナ内部から設定するしかない模様。
docker exec -it new_ghost bash
とかなんかでコンテナ内に入ります。コンテナ内ではghost
コマンドが使えるようですが、ここではghost config url <your domain>
みたいな感じでconfig.production.json
を書き換えることが出来ました。 - コンテナを再起動して適用されてたら終わり!
設定ファイルをマウントさせないのは何か直接編集されたくない理由でもあるのでしょうか。あんまり本格的に運用してるわけでもないので調べる気は起きず。そして相変わらずコンテナ内からメールが送れず。
その他の点に関しては特に問題ありませんでした。管理画面も洗練され、特に投稿画面はより書きやすくなりました。
適当にゲームの記事を書こうと思ったのですが、後日に回します。