Heroku在部署时按预期执行collectstatic?

3b6akqbq  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(111)

我有Django设置来收集我的静态文件,并使用django-storages将它们复制到S3中,当我显式运行时,这就像一个魅力

heroku run python manage.py collectstatic

字符串
然而,我希望Heroku在部署时自动执行此操作(即git push到Heroku),如本文档https://devcenter.heroku.com/articles/django-assets中所述。显然,输出:

python manage.py collectstatic --dry-run --noinput


确定collectstatic是否配置正确(当我显式运行它时,collectstatic可以正常工作)。我得到:

$ heroku run python manage.py collectstatic --dry-run --noinput
Running `python manage.py collectstatic --dry-run --noinput` attached to terminal... up, run.9607
Pretending to copy '/app/app_pkg/static/robots.txt'
.... # Lot of similar outputs not shown
16 static files copied.


在我看来,这看起来很好,但文档没有指定我应该看到什么。当我部署项目时,一切似乎都工作正常,并成功完成。

-----> Installing dependencies using Pip (1.2.1)
       Cleaning up...
-----> Collecting static files
       16 static files copied.

-----> Discovering process types
       Procfile declares types -> web


但是这些文件不会显示在我的S3存储桶中。

heroku run python manage.py collectstatic


所有文件都显示在S3存储桶中。我认为Heroku应该为我执行此操作,我不确定为什么不这样做。这是预期的行为吗?我应该自己做吗?

iqjalb3h

iqjalb3h1#

奇怪的是,还没有人回答你!简单地把这个添加到你的Procfile的开头:

web: python manage.py collectstatic --noinput

字符串
每次在Heroku上部署应用时,都会运行python manage collectstatic。
最干净的方法是将其链接到现有的Procfile,如下所示:

web: python my_django_app/manage.py collectstatic --noinput; bin/gunicorn_django --workers=4 --bind=0.0.0.0:$PORT my_django_app/settings.py


作者:Matthew Phiong & his awesome blog post

mnemlml8

mnemlml82#

建议人们使用在最佳答案发布后很久才介绍给heroku的release。https://devcenter.heroku.com/articles/release-phase

release: python manage.py collectstatic --clear --noinput

字符串

相关问题