当使用docker和asp.net core进行开发时,我应该使用用户机密或环境变量吗?我使用Visual Studio 2017在添加项目时创建的默认泊坞窗文件,该项目使用microsoft/aspnetcore:1.1,我相信它是一个Linux映像。我是否应该在Docker中使用用户机密或环境变量
如何在Docker中设置用户机密/环境变量,以便在启动时设置它们,但不包含在源代码中?
当使用docker和asp.net core进行开发时,我应该使用用户机密或环境变量吗?我使用Visual Studio 2017在添加项目时创建的默认泊坞窗文件,该项目使用microsoft/aspnetcore:1.1,我相信它是一个Linux映像。我是否应该在Docker中使用用户机密或环境变量
如何在Docker中设置用户机密/环境变量,以便在启动时设置它们,但不包含在源代码中?
环境瓦尔更好 - https://12factor.net/config
如果您在使用docker run
使用-e
或--env-file
选项运行泊坞窗: https://docs.docker.com/engine/reference/run/#env-environment-variables
如果您在使用docker-compose
使用environment
或env_file
键运行泊坞窗: https://docs.docker.com/compose/environment-variables/
为了生产目的,您需要使用环境变量,而不是使用秘密。通过帮助防止在存储代码的敏感数据在开发过程中的秘密存在ONLY安全储存/签入源代码控制:
秘密管理器工具不加密存储的机密,不应该被视为一个值得信赖商店。它仅用于开发目的。键和值存储在用户配置文件目录中的JSON配置文件中。
作为替代对环境变量您可以考虑使用“外部”键 - 值仓库,像Consul,Vault等
关于搬运工环境变量,因此已经有相关问题和答案。以How to pass environment variables to docker containers?为例。
我知道如何通过docker命令传递环境变量,但是我怎么做才能在Visual St中进行调试音频和启动码头图像,它通过环境变量? –
晚会晚了。如果你正在运行VS并且需要将环境变量传递给你的容器: – Jake
我决定添加另一个名为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文件,以便它不会被添加到源代码控制。用户密码和环境变量仍然可以使用。
这就是我一直在寻找的东西。我正在使用.env文件,如https://docs.docker.com/compose/environment-variables/#the-env-file所述,并将其添加到.gitignore中。谢谢。 –