静的ファイルを収集し、django-storagesを使用してS3にコピーするようにDjangoをセットアップしました。これは、明示的に実行すると魅力のように機能します。
heroku run python manage.py collectstatic
ただし、このドキュメントhttps://devcenter.heroku.com/articles/django-assetsで説明されているように、Herokuはデプロイ時にこのアクションを自動的に実行することを期待しています(つまり、Herokuへのgitプッシュ)。どうやら、の出力:
python manage.py collectstatic --dry-run --noinput
collectstaticが正しく構成されているかどうかを判別します(collectstaticを明示的に実行すると正しく機能します)。私は得る:
$ heroku run python manage.py collectstatic --dry-run --noinput
Running `python manage.py collectstatic --dry-run --noinput` attached to terminal... up, run.9607
Pretending to copy '/app/app_pkg/static/robots.txt'
.... # Lot of similar outputs not shown
16 static files copied.
それは私には良さそうに見えますが、ドキュメントには私が見るべきものが指定されていません。プロジェクトをデプロイすると、すべてが正常に機能し、正常に完了したように見えます。
-----> Installing dependencies using Pip (1.2.1)
Cleaning up...
-----> Collecting static files
16 static files copied.
-----> Discovering process types
Procfile declares types -> web
ただし、ファイルはS3バケットに表示されません。その後、明示的に実行すると
heroku run python manage.py collectstatic
すべてのファイルがS3バケットに表示されます。Herokuがこのアクションを実行する必要があると思いますが、なぜそうではないのかわかりません。これは予想される動作ですか?自分でやる必要がありますか?