no-image

docker-compose で建てた CodiMD(HackMD) を 1.3.1 から 2.0.1 に更新する

docker-compose で建てた CodiMD(HackMD) を 1.3.1 から 2.0.1 に更新する

以前の記事の最新版です。

更新時に注意するバージョンについて次に挙げるページで言及されていますが、1.1.0 以降は特に表立った手順は必要ないようです。

前回の記事の後追いなので、詳細は省略して残します。

手順

PosgreSQL データのバックアップ

不要ですが念のため。

$ cd docker-hackmd
$ sudo docker-compose exec database pg_dump hackmd -U hackmd  > backup.sql

コンテナ削除

$ sudo docker-compose down
Stopping docker-hackmd_app_1      ... done
Stopping docker-hackmd_database_1 ... done
Removing docker-hackmd_app_1      ... done
Removing docker-hackmd_database_1 ... done
Removing network docker-hackmd_backend

docker-compose.yml を変更

イメージの指定を 2.0.1 に変更します。
app: 下の image: hackmdio/hackmd:1.2.0image: hackmdio/hackmd:2.0.1 に書き換えます。

新しいイメージの取得

$ sudo docker-compose pull
Pulling database ... done
Pulling app      ... done

コンテナ作成

$ sudo docker-compose up -d
Creating network "docker-hackmd_backend" with the default driver
Creating docker-hackmd_database_1 ... done
Creating docker-hackmd_app_1      ... done

失敗

一見うまくいっているように見えていますが、appのコンテナが落ちています。

$ sudo docker-compose ps
          Name                        Command                State       Ports
--------------------------------------------------------------------------------
docker-hackmd_app_1        /home/hackmd/app/docker-en      Restarting
                           ...
docker-hackmd_database_1   docker-entrypoint.sh postgres   Up           5432/tcp

原因調査

$ sudo docker logs docker-hackmd_app_1
Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!Error: value of env: CMD_DB_URL is empty!

環境変数が一つだけ変更されていました。
HMD_DB_URLCMD_DB_URL に変更すればOKです。

コンテナ再生成

$ sudo docker-compose down
Stopping docker-hackmd_app_1      ... done
Stopping docker-hackmd_database_1 ... done
Removing docker-hackmd_app_1      ... done
Removing docker-hackmd_database_1 ... done
Removing network docker-hackmd_backend
$ sudo docker-compose up -d
Creating network "docker-hackmd_backend" with the default driver
Creating docker-hackmd_database_1 ... done
Creating docker-hackmd_app_1      ... done

$ sudo docker-compose ps
         Name                   Command           State           Ports
--------------------------------------------------------------------------------
docker-hackmd_app_1      /home/hackmd/app/docke   Up      0.0.0.0:3000->3000/tcp
                         r-en ...
docker-                  docker-entrypoint.sh     Up      5432/tcp
hackmd_database_1        postgres

これで元通り問題なく使えました。