2

ホワイトノイズと圧縮された静的ファイル (libsass を含む) を使用して django プロジェクトを実行することができません。以下のリンクで、必要な静的ファイルをオフラインで圧縮することによってのみ可能であると読みました。しかし、dockerコンテナを起動すると、compressコマンドを実行しています

docker-compose -f production.yml run --rm django python manage.py compress

エラーが発生します:

ValueError: Missing staticfiles manifest entry for 'sass/app.scss'

サイトをリクエストしようとすると、次のエラーが表示されます (予想通り?):

compressor.exceptions.OfflineGenerationError: You have offline compression enabled but key "..." is missing from offline manifest. You may need to run "python manage.py compress"

設定は次のとおりです (cookiecutter-django でビルドします。以下の完全なコード ベースのリンクを参照してください)。

STATIC_ROOT = str(ROOT_DIR("staticfiles"))
STATIC_URL = "/static/"
STATICFILES_DIRS = [str(APPS_DIR.path("static"))]
STATICFILES_FINDERS = [
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
]

STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"

STATICFILES_FINDERS += ["compressor.finders.CompressorFinder"]

COMPRESS_PRECOMPILERS = [("text/x-scss", "django_libsass.SassCompiler")]
COMPRESS_CACHEABLE_PRECOMPILERS = (("text/x-scss", "django_libsass.SassCompiler"),)

COMPRESS_ENABLED = env.bool("COMPRESS_ENABLED", default=True)
COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage"
COMPRESS_URL = STATIC_URL

それで、インターネットを1日検索した後。私は立ち往生しています...助けや提案をありがとう!

コードベース: https://github.com/rl-institut/E_Metrobus/tree/compress

これはcookiecutter-django-foundationでビルドされています

への次の変更を含みますconfig/setttings/production.py

COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage"  # Instead of pre-set "storages.backends.s3boto3.S3Boto3Storage"
COMPRESS_ROOT = STATIC_ROOT  # Just in case
COMPRESS_OFFLINE = True  # Needed to run compress offline

考えられる関連リンク:

編集

Justinsの回答を使用して解決しました(以下を参照してください。追加の変更があります)。私の間違いは、既に実行中のコンテナーでファイルを圧縮しようとしたことで、上記のエラーが発生しました。次の行で Dockerfile を変更した後 (コマンドが重複していることに注意してくださいcollectstatic!):

python /app/manage.py collectstatic --noinput
python /app/manage.py compress --force
python /app/manage.py collectstatic --noinput
/usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app

イメージの再構築はすべて魅力的に機能しました:)さらに、上記の設定から逸脱してCOMPRESS_ENABLED=True、設定/環境ファイルに設定する必要がありました。

4

2 に答える 2