ぶていのログでぶログ

思い出したが吉日

? docker版re:dashでDBマイグレーションする

re:dashを0.11.0+b2016から何を思ったか1.0.0+b2521まで上げたのでその時に実行したDBマイグレーションのメモ。 以下のサイトを参考にした。

laughingman7743.hatenablog.com

# dockerホストで実行
$ docker-compose exec redash /bin/bash

# env | grep REDASH > .env
# for script in migrations/*; do echo $scirpt ; PYTHONPATH=. ./bin/run python $script;done
# rm .env

なんか、大量にエラーを吐いた(テーブルが存在しているとか)けど使えているからまぁ大丈夫かな…たぶん。

追記(2016/12/06 19:00

どうやら migaraionts 配下のスクリプトをすべて実行してはいけないようだ…。 そりゃあ大量にエラーがでる…。 参考にしたサイトも大元のfabricもちゃんと、古いバージョンと新しいバージョンで存在する差分を取っていたのであった。

ということで、以下のようなスクリプトを作ったので、次アップデートするときはよしなにmigrateできるだろう。

#!/bin/bash

set -e

OLD_VERSION="$1"

if [ -z "$OLD_VERSION" ]; then
    echo "Usage: $(basename $0) <old version>"
    exit 1
fi

(
    docker run --rm redash/redash:$OLD_VERSION find migrations -type f ;
    docker-compose run -T redash find migrations -type f ;
) | sort | uniq -u | while read SCRIPT;
do
    echo "+ $SCRIPT"
    docker-compose run -T -e PYTHONPATH=. --rm redash python $SCRIPT
done