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

Django Cookiecutter using environment variables pattern in production

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

相关文档在这里:

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

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

我正在尝试部署到数字海洋中的 docker 液滴。

我的理解是否正确:

.production 文件夹从未 签入源代码管理,并且仅作为示例生成,以便在我准备好部署时在生产机器上创建什么?

所以当我部署时,作为该过程的一部分,我需要在 docker droplet 上对项目进行 pull/clone,然后

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

运行 merge_production_dotenvs_in_dotenv.py 在本地创建我复制到生产环境中的 .env 文件并配置我的 production.yml 以使用它?

谢谢 克里斯

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

因此,当您想要部署时,您 clone/pull 将存储库放入您的服务器,您的 .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

生产环境文件未进入源代码控制,只有本地文件是。至少这是有意的,生产环境文件不应该在源代码管理中,因为它们包含秘密。

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

构建的映像