簡體   English   中英

Django static 文件在 Heroku 上使用 ZC5FD214CDD0D2B3B54272E73B0 部署時未加載

[英]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:

正如評論中所建議的那樣。 我嘗試按照本教程中的內容進行操作,其中還完成了兩件事:

  1. 設置STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
  2. 運行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM