Docker微服务部署的十二个因素应用

时间:2015-10-27 16:55:41

标签: python django microservices 12factor

我非常喜欢Twelve Factors Manifesto背后的想法。我正在尝试将它们应用于Python / Django项目的小型微服务式部署。 Django项目打包在一个Docker容器中,该容器通过Docker Hub部署。

我想要了解的一件事是如何处理配置文件和环境变量。 12因素应用程序的常识是配置应该存储为环境变量,而不是源代码控制。我正在考虑使用django-environ来检查环境变量,以及用于开发的.env文件。

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

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

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

任何想法如何解决这个问题?

0 个答案:

没有答案