5

dokku を使用して Django アプリをデプロイすると、次のエラーが発生します

Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput

dokku コンテナーを実行する方法が見つかりませんでしheroku run python ./manage.py collectstatic --noinputたが、試してみるdokku run my app python ./manage.py collectstatic --noinputと、静的ファイルがSTATIC_ROOTフォルダーに正常にコピーされ、エラー メッセージは表示されません。

collectstaticコマンドをに配置することで問題を解決できましたProcfile

web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi

それでも、何が問題を引き起こしているのか、どのようにデバッグできるのかを知りたいです。何か案は?

4

1 に答える 1

9

settings.py ファイルには、、、および という 4 つの設定がMEDIA_ROOT必要です。MEDIA_URLSTATIC_ROOTSTATIC_URL

私は私のように設定しました:

MEDIA_ROOT = 'media' STATIC_ROOT = 'static' MEDIA_URL = '/media' STATIC_URL = '/static'

作成された docker コンテナー内で、メディア パス /app/media/ と静的パス /app/static/ を作成する /app の下にアプリケーションがあります。

残念ながら、メディアと静的フォルダーが git にコミットされていない場合、/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」するたびに新しいコンテナが作成され、古いコンテナは破棄されることに注意してください。これは静的ファイルの問題ではありませんが、別の場所に保存しない限り、メディアは失われます。

于 2014-08-01T01:40:25.817 に答える