Django Cookiecutter在生产中使用环境变量模式

时间:2019-02-18 12:21:29

标签: cookiecutter-django

我试图了解如何在django cookie cutter生成的项目中使用生产.env文件。

有关此文档,请参见此处:

https://cookiecutter-django.readthedocs.io/en/latest/developing-locally-docker.html#configuring-the-environment

项目已生成,并为环境变量创建了.local和.production文件夹。

我正尝试在数字海洋中部署到Docker分支。

我的理解正确吗?

.production文件夹不会从不签入源代码管理,并且仅在准备部署时作为在生产计算机上创建内容的示例生成。

因此,当我进行部署时,作为该过程的一部分,我需要在docker drop上进行项目的拉/克隆,然后进行

使用生产环境变量文件夹结构手动创建.production文件夹吗?

OR

在本地运行merge_production_dotenvs_in_dotenv.py来创建.env文件,然后将其复制到生产环境并配置我的production.yml以使用该文件吗?

谢谢 克里斯

2 个答案:

答案 0 :(得分:1)

生产环境文件不在源代码管理中,只有本地文件在其中。至少这是有意的,生产环境文件不应包含在机密中,因为它们包含机密。

但是,当您运行它们时,它们会通过docker-compose添加到docker映像中。您可以使用Digital Ocean driver创建Docker机器,从终端激活它,然后通过运行docker-compose -f production.yml -d up来启动构建的映像。

答案 1 :(得分:0)

Django cookiecutter确实添加了.envs/.production并将.envs/文件夹中的所有内容都添加到了源代码管理中。您可以通过检查.gitignore文件来了解这一点。 .gitignore文件不包含.envs,这意味着.envs/文件夹已签入源代码管理。

因此,当您要进行部署时,请将存储库克隆/拉入服务器,并且.production/文件夹也将存在。

您还可以运行merge_production_dotenvs_in_dotenv.py来创建.env文件,但是.env不会被检入源代码管理,因此您必须将文件复制到服务器上。然后,您可以将docker-compose文件配置为将path/to/your/project/.env作为env_file包含在需要该文件中环境变量的任何服务中。

您可以使用 scp 将文件从本地计算机轻松复制到服务器,如下所示:

scp /path/to/local/file username@domain-or-ipaddress:/path/to/destination