![](/img/trans.png)
[英]Whitenoise Not Working when DEBUG = FALSE - Django - Hosting Static Files
[英]Django static files are not loaded when deploying on Heroku using Docker and Whitenoise
我正在嘗試在 Heroku 上部署 django 應用程序(使用Whitenoise ),除了 static 文件外,其他一切都很好。 示例項目僅在首頁顯示了 header“主頁”。 如果正確加載 css 文件,則 header 將顯示為紅色,否則為黑色。
I got the above project to work in a virtualenv
, a Docker
container, with DEBUG=False
, but I could not make it work on Heroku for some reason (The header would be Red if the CSS loaded correctly).
I tried to use the django-heroku
as suggested by the Heroku docs but it starts throwing 500 server error, and when checking the heroku logs
it says manifest not found for the css file , which seems to be because it sets STATICFILES_STORAGE
to a different value .
設置或yml文件中是否存在錯誤設置? 或者可能是因為我正在部署 Docker 文件(而不是Procfile
)我需要使用不同的設置?
更新 1:
正如評論中所建議的那樣。 我嘗試按照本教程中的內容進行操作,其中還完成了兩件事:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
heroku plugins:install @heroku-cli/plugin-manifest
這樣做時,現在我得到一個不同的 HTTP 500 錯誤:
/usr/local/lib/python3.7/site-packages/whitenoise/base.py:115:UserWarning:沒有目錄:/django-heroku-staticfiles/staticfiles/
現在我認為問題很清楚了。 所以我開始在 heroku 實例上運行一些命令:
$ heroku run ls -l /django-heroku-staticfiles
Running ls -l /django-heroku-staticfiles on ⬢ evening-lowlands-39080... up, run.5553 (Free)
total 160
-rw------- 1 u35232 dyno 179 May 30 12:21 Dockerfile
-rw------- 1 u35232 dyno 131072 May 30 12:21 db.sqlite3
-rw------- 1 u35232 dyno 235 May 30 12:21 docker-compose.yml
drwx------ 2 u35232 dyno 4096 May 30 12:21 hello_project
-rw------- 1 u35232 dyno 182 May 30 12:21 heroku.yml
-rwx------ 1 u35232 dyno 633 May 30 12:21 manage.py
drwx------ 4 u35232 dyno 4096 May 30 12:21 pages
-rw------- 1 u35232 dyno 93 May 30 12:21 requirements.txt
drwx------ 2 u35232 dyno 4096 May 30 12:21 templates
$ heroku run python manage.py collectstatic --clear --noinput
Running python manage.py collectstatic --clear --noinput on ⬢ evening-lowlands-39080... up, run.9686 (Free)
131 static files copied to '/django-heroku-staticfiles/staticfiles', 413 post-processed.
$ heroku run ls -l /django-heroku-staticfiles
Running ls -l /django-heroku-staticfiles on ⬢ evening-lowlands-39080... up, run.3303 (Free)
total 160
-rw------- 1 u20456 dyno 179 May 30 12:21 Dockerfile
-rw------- 1 u20456 dyno 131072 May 30 12:21 db.sqlite3
-rw------- 1 u20456 dyno 235 May 30 12:21 docker-compose.yml
drwx------ 2 u20456 dyno 4096 May 30 12:21 hello_project
-rw------- 1 u20456 dyno 182 May 30 12:21 heroku.yml
-rwx------ 1 u20456 dyno 633 May 30 12:21 manage.py
drwx------ 4 u20456 dyno 4096 May 30 12:21 pages
-rw------- 1 u20456 dyno 93 May 30 12:21 requirements.txt
drwx------ 2 u20456 dyno 4096 May 30 12:21 templates
為什么沒有創建staticfiles
? 也許我需要通過 Docker 運行命令? 抱歉,我是 Docker、Django 和 Heroku 的新手,所以我可能遺漏了一些明顯的東西。
感謝@Original BBQ Sauce ,這個SO question和這個 Reddit 帖子,問題終於解決了。 它與我們運行collectstatic
的位置/時間有關。 最初,我將它作為heroku.yml
文件中的release command
運行,該文件由於某種原因沒有創建 staticfiles 目錄。 我是這樣做的,就像在 Django for Professionals 書中所做的那樣。
現在,如果該命令在 Dockerfile 中運行,則會創建 staticfiles 目錄,並且一切正常。 存儲庫現在具有新的工作設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.