DokkuでDjangoアプリをデプロイするときのCollectstatic設定エラー
-
21-12-2019 - |
質問
Dokkuを使用してDjangoアプリをデプロイすると、次のエラーが発生します
Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput
私は実行する方法が見つかりませんでした heroku run python ./manage.py collectstatic --noinput
dokkuコンテナのために、しかし、私がしようとしているとき dokku run my app python ./manage.py collectstatic --noinput
, 、静的ファイルが正常にコピーされます。 STATIC_ROOT
フォルダとエラーメッセージが表示されません。
私は置くことで問題を解決することができました collectstatic
にコマンドを入力します。 Procfile
:
web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi
それでも、何が問題の原因であり、どのようにデバッグできるかを知りたいと思います。何か考えは?
解決
あなたはあなたの中に四つの設定を持っている必要がありますsettings.py 呼び出されたファイル MEDIA_ROOT
, MEDIA_URL
, STATIC_ROOT
と STATIC_URL
.
私はそのように私のものを設定しました:
MEDIA_ROOT = 'media'
STATIC_ROOT = 'static'
MEDIA_URL = '/media'
STATIC_URL = '/static'
作成されるdockerコンテナ内には、メディアパス/app/media/と静的パス/app/static/を作成する/appの下にアプリケーションがあります。
残念ながら、gitでmediaフォルダとstaticフォルダがコミットされていない場合、/appの下に自動的に作成されません。
Gitは空のフォルダをコミットすることを許可していないので(ファイルのみをコミットします)、私は自分のプロジェクトで次のことを行います:
mkdir media static
touch media/.dir
touch static/.dir
git add media/.dir static/.dir
git commit -m 'Make media and static directories'
'Touch'コマンドは空のファイルを作成し、新しく作成された2つのファイルを'git add'してチェックインします。
これで、プッシュすると、ディレクトリがメディアと静的ファイルを含むようになります。「Git push」するたびに、新しいコンテナが作成され、古いコンテナが破棄されることに注意してください。これは静的ファイルの問題ではありませんが、他の場所に保存しない限り、メディアは失われます。