![](/img/trans.png)
[英]Error with collectstatic while deploying Django app to Heroku
[英]Collectstatic configuration error when deploying Django app with dokku
使用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下找到您的應用程序,它將生成媒體路徑/ app / media /和靜態路徑/ app / static /。
不幸的是,如果你沒有在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'命令創建一個空文件,然后你'添加'兩個新創建的文件並檢查它們。
現在,當您推送時,目錄將包含媒體和靜態文件。 請記住,每次“git push”時,都會創建一個新容器,舊容器將被銷毀。 雖然這對您的靜態文件不是問題,但除非您將其存儲在其他位置,否則您的媒體將會丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.