【问题标题】:Django Cookiecutter using environment variables pattern in productionDjango Cookiecutter 在生产中使用环境变量模式
【发布时间】:2019-02-19 06:12:08
【问题描述】:

我正在尝试了解如何在 django cookie 切割器生成的项目中使用生产 .env 文件。

相关文档在这里:

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

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

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

我的理解正确吗:

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

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

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

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

谢谢 克里斯

【问题讨论】:

    标签: cookiecutter-django


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      • 我刚刚创建了一个新的 django cookie 切割器项目,它位于文件的底部: .env .envs/* !.envs/.local/ 表示它保留了除 prod envs 之外的所有内容?
      • 你说得对,克里斯,本地 .env 文件可能保存在源代码管理中,但不是生产文件。这个答案不准确。
      • 我刚刚又检查了一遍。我的错,我一定是编辑了我自己项目的.gitignore 文件。感谢您的澄清!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 2021-07-25
      • 2020-02-24
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      相关资源
      最近更新 更多