2017-03-11 36 views
2

当使用docker和asp.net core进行开发时,我应该使用用户机密或环境变量吗?我使用Visual Studio 2017在添加项目时创建的默认泊坞窗文件,该项目使用microsoft/aspnetcore:1.1,我相信它是一个Linux映像。我是否应该在Docker中使用用户机密或环境变量

如何在Docker中设置用户机密/环境变量,以便在启动时设置它们,但不包含在源代码中?

回答

1

环境瓦尔更好 - https://12factor.net/config

如果您在使用docker run使用-e--env-file选项运行泊坞窗: https://docs.docker.com/engine/reference/run/#env-environment-variables

如果您在使用docker-compose使用environmentenv_file键运行泊坞窗: https://docs.docker.com/compose/environment-variables/

+0

这就是我一直在寻找的东西。我正在使用.env文件,如https://docs.docker.com/compose/environment-variables/#the-env-file所述,并将其添加到.gitignore中。谢谢。 –

2

为了生产目的,您需要使用环境变量,而不是使用秘密。通过帮助防止在存储代码的敏感数据在开发过程中的秘密存在ONLY安全储存/签入源代码控制:

秘密管理器工具不加密存储的机密,不应该被视为一个值得信赖商店。它仅用于开发目的。键和值存储在用户配置文件目录中的JSON配置文件中。


作为替代对环境变量您可以考虑使用“外部”键 - 值仓库,像ConsulVault


关于搬运工环境变量,因此已经有相关问题和答案。以How to pass environment variables to docker containers?为例。

+0

我知道如何通过docker命令传递环境变量,但是我怎么做才能在Visual St中进行调试音频和启动码头图像,它通过环境变量? –

+0

晚会晚了。如果你正在运行VS并且需要将环境变量传递给你的容器: – Jake

0

我决定添加另一个名为appsettings.secrets.json的appsettings文件,而不是使用用户机密或环境变量。然后在构造函数中添加文件像其他的AppSettings文件:

var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile("appsettings.secrets.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 

只是一定的appsettings.secrets.json添加到的.gitignore文件,以便它不会被添加到源代码控制。用户密码和环境变量仍然可以使用。

相关问题