1

herokuで実行しているdjangoアプリがあります。South移行に依存するコードが公開される前に、South移行を実行したいと思います。現在推奨されている方法を簡単に確認した後、2つの推奨される移行手順を見つけました。

推奨事項1

  1. すべての変更をコミットしてプッシュする
  2. heroku run python manage.py migrate <APP_NAME>アプリごとに実行

これは、ステップ1と2の間に期間があり、コードが最新のスキーマが配置されていると想定しているが、データベースがまだ更新されていないという問題があります。

推奨事項2

  1. すべてのデータベース変更をコミットしてプッシュします。
  2. 移行します。
  3. すべてのコード変更をプッシュします。

これにより前の問題は解決されますが、展開プロセスがさらに複雑になり、いつかこれを台無しにすることになります。

考えられる解決策?

推奨事項1の問題を回避し、各アプリを(依存関係の順序で)呼び出すカスタムpost_compileスクリプトを利用することで、デプロイメントを1つのステップに保つことができるようです。python $MANAGE_FILE migrate <APP_NAME>

私はこれがどこにも推奨されているのを見たことがないので、私の質問は2つあります。このアプローチの潜在的な問題を確認できますか?また、より良い方法がありますか?

4

1 に答える 1

1

アプリケーションにある程度のダウンタイムが発生する可能性がある場合、最も簡単な方法は私には

  1. を使用してアプリを一時停止します$ heroku maintenance:on
  2. ですべてのアプリを一度に移行しますheroku run python manage.py migrate
  3. アプリを再起動します。$ heroku maintenance:off

それで十分ですか、それとももっと複雑なニーズがありますか?

于 2012-10-16T15:33:04.057 に答える