1

我真的很喜欢十二因素宣言背后的想法。我正在尝试将它们应用于 Python/Django 项目的小型微服务式部署。Django 项目打包在一个通过 Docker Hub 部署的 Docker 容器中。

我想了解的一件事是如何处理配置文件和环境变量。12 要素应用程序的普遍看法是配置应该存储为环境变量,而不是源代码控制。我正在考虑使用检查环境变量的django-environ.env以及在 dev 中使用的文件来实现这一点。

那么如何在生产环境中设置这些环境变量呢?

  • 在 Docker 中,可以像ENV在 Dockerfile ( doc ) 中一样声明环境变量。所以我可以在那里添加这些信息,但是我用源代码签入 Dockerfile,所以这会破坏目的。
  • 我可以为生产创建一个附加.env文件,而不是将其签入源代码管理。我可以在使用命令.env构建映像时复制此生产文件。COPY但这意味着开发人员将有权访问数据库凭据。
  • 设置自定义构建触发器,以便在源代码管理中更新代码时发出构建触发器。在构建映像时,此构建节点会添加此.env文件,并部署到服务器。

我觉得第三种选择是唯一有意义的选择。但即使在这种情况下,配置项仍然存储在文件中,而不是真正存储在环境变量中。

任何想法如何去做?

4

0 回答 0