Upgrading Metabase に書いてあるが、ざっくりすぎるので もうちょっとちゃんと書いておく。
Docker もっと慣れていきたい。
事前準備(DBのデータをローカルにマウントしていない場合)
metabase のデータ(作成したダッシュボードなどのデータ)は、H2というファイルに書かれる仕組みになっている。
最初に起動するときに docker run -d -p 3000:3000 --name metabase metabase/metabase
このコマンドで起動した場合、
このデータはコンテナに含まれてしまうため、イメージを変えた(metabaseのアップデート)の際に永続化できない。
そこで、まずローカルファイルシステムのフォルダを指定しておき、Dockerコンテンを起動する際にマウントすることにしたい。
まずそれまで使っていたデータをコピーする。
$ cd ~ $ mkdir metabase-data $ docker cp CONTAINER_ID:/metabase-data/metabase.db ./
最新のイメージをpull
$ docker pull metabase/metabase:latest
新しいイメージで起動
$ docker ps $ docker stop metabase # コンテナ名は上のpsコマンドで表示されたものを入れる $ docker rename metabase metabase_old #コンテナ名かぶるというエラーが表示されてしまうのでリネームしておく。
リネームしないと以下のようなエラーが出る。
docker: Error response from daemon: Conflict. The container name "/metabase" is already in use by container "1bbaaf5d3cca4a0cc402a5369e3f6036168a81b6b1e27d939301a67a383f8116". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'.
新しいイメージで起動
$ docker run -d -p 80:3000 \ -v ~/metabase-data:/metabase-data \ -e "MB_DB_FILE=/metabase-data/metabase.db" \ --name metabase metabase/metabase
バージョン確認
/admin/settings/updates
にアクセスしてバージョン上がっていればOK