簡體   English   中英

使用dokku部署Django應用程序時出現Collectstatic配置錯誤

[英]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_ROOTMEDIA_URLSTATIC_ROOTSTATIC_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.

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