はじめに
redash v4.0.0がリリースされました。1
現時点で Docker Hub に latest タグで登録されているのはまだ v3系のイメージですが、リリース直後に4.0.0.b3948というイメージが登録されており、おそらくこれは4.0.0の公式版かそれに近いイメージだと思われます。2
そのイメージを利用してv3からv4にアップグレードする手順を共有しておきます。
手順
イメージのインストール
まず、docker hubから上記のイメージを取得します。
% docker pull redash/redash:4.0.0.b3948
docker-compose.production.yml を編集して上記イメージを使用するようにします。
*** docker-compose.production.yml.bak 2018-04-19 11:56:49.057986536 +0900
--- docker-compose.production.yml 2018-04-19 11:57:25.017988679 +0900
***************
*** 7,13 ****
version: '2'
services:
server:
! image: redash/redash:latest
command: server
depends_on:
- postgres
--- 7,13 ----
version: '2'
services:
server:
! image: redash/redash:4.0.0.b3948
command: server
depends_on:
- postgres
これで、
% docker-compose -f docker-compose.production.yml up -d
と実行すればイメージが更新されて再起動します。ただし、v3以前からアップグレードした場合、DBスキーマを更新しないと500エラーになってしまいます。
DBスキーマ更新
migrationファイルの作成
起動したserverコンテナの/app/migrations/versions/ に migrationファイルが用意されていればこの手順は不要です。なぜか存在しなかったので作る必要がありました。すでに存在していれば何もしないので実行して問題ありません。
% docker-compose -f docker-compose.production.yml run --rm server ./manage.py db migrate
これでいいはずなのですが、なぜか今回ここで生成したファイルを使ってアップグレードしようとするとエラーになるので、このファイルを編集する必要があります。今回の場合、/app/migrations/versions/9a29a510be26_.py というファイルでした。3
修正は下記のように1行挿入するだけです。
*** 9a29a510be26_.py.bak 2018-04-19 12:22:44.334204420 +0900
--- 9a29a510be26_.py 2018-04-19 01:46:28.162376408 +0900
***************
*** 7,12 ****
--- 7,13 ----
"""
from alembic import op
import sqlalchemy as sa
+ import sqlalchemy_utils
# revision identifiers, used by Alembic.
revision = '9a29a510be26'
コンテナにviが入ってないので、docker cp コマンドでホストに上記ファイルをもってきて編集して同じく docker cpで書き戻しました。
upgrade
重要なデータがある場合、念のためバックアップを忘れずに。
% docker-compose -f docker-compose.production.yml run --rm server ./manage.py db upgrade
これで完了です。
-
環境により異なる可能性があるので upgradeのエラーメッセージを確認してください。 ↩