我有两个分公司,开发和生产。每个都有依赖项,其中一些是不同的。开发点指向开发中的依赖项。生产也是如此。我需要部署到Heroku,Heroku希望每个分支的依赖项都位于一个名为“requirements.txt”的文件中
组织的最佳方式是什么
我想到的是:
- 维护单独的需求文件,每个分支中有一个(必须能够经受住频繁的合并!)
- 告诉Heroku我要使用哪个需求文件(环境变量?)
- 编写部署脚本(创建临时分支、修改需求文件、提交、部署、删除临时分支)
您可以级联需求文件,并使用“-r”标志通知pip将一个文件的内容包含在另一个文件中。您可以将您的需求分解为模块化文件夹层次结构,如下所示:
`--django\u项目根目录
|--要求
||--common.txt
||--dev.txt
|`--prod.txt
`--requirements.txt
文件的内容如下所示:
common.txt:
#包含所有环境的通用需求
需求1==1.0
需求2==1.0
需求3==1.0
...
dev.txt:
#仅指定特定于开发人员的需求
#但也进口普通的
-r common.txt
dev_req==1.0
...
prod.txt:
#产品也一样。。。
-r common.txt
产品需求==1.0
...
在Heroku之外,您现在可以设置如下环境:
pip安装-r需求/dev.txt
或
pip安装-r要求/prod.txt
由于Heroku在项目根目录中专门查找“requirements.txt”,因此它应该只是镜像prod,如下所示:
requirements.txt:
#镜像产品
-r要求/prod.txt