dgh*_*dgh 1 python django heroku
我有Django设置来收集我的静态文件并使用django-storage将它们复制到S3中,当我明确地运行时,这就像一个魅力
heroku run python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)
但是,我希望Heroku在部署时自动执行此操作(即git push to Heroku),如本文档https://devcenter.heroku.com/articles/django-assets中所述.显然,输出:
python manage.py collectstatic --dry-run --noinput
Run Code Online (Sandbox Code Playgroud)
确定是否正确配置了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.
Run Code Online (Sandbox Code Playgroud)
这看起来不错,但文档没有说明我应该看到的内容.当我部署项目时,一切似乎都运行良好并成功完成.
-----> Installing dependencies using Pip (1.2.1)
Cleaning up...
-----> Collecting static files
16 static files copied.
-----> Discovering process types
Procfile declares types -> web
Run Code Online (Sandbox Code Playgroud)
但是文件不会显示在我的S3存储桶中.如果我然后明确运行
heroku run python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)
所有文件都显示在S3存储桶中.我认为Heroku应该为我执行此操作,我不确定为什么不是.这是预期的行为吗?我应该自己做吗?
奇怪没有人回答你了!只需将其添加到Procfile的开头:
web: python manage.py collectstatic --noinput
Run Code Online (Sandbox Code Playgroud)
每次你的应用程序部署在Heroku上时,这将运行python管理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
Run Code Online (Sandbox Code Playgroud)
感谢Matthew Phiong和他精彩的博客文章
归档时间: |
|
查看次数: |
2123 次 |
最近记录: |