dar*_*k_c 9 docker .net-core asp.net-core
使用 docker 和 asp.net core 进行开发时,我应该使用用户机密还是环境变量?我正在使用 Visual Studio 2017 在添加项目时创建的默认 docker 文件,该文件使用 microsoft/aspnetcore:1.1,我认为是 linux 映像。
如何在 docker 中设置用户机密/环境变量,以便在启动时设置它们,但不包含在源代码中?
vla*_*mir 14
对于开发,我依赖 .net秘密管理器工具:
dotnet user-secrets init
dotnet user-secrets set "Movies:ServiceApiKey" "12345"
..
Run Code Online (Sandbox Code Playgroud)
请参阅MS 文档:ASP.NET Core 开发中应用程序机密的安全存储。
Docker 示例:
docker run ^
-e ASPNETCORE_ENVIRONMENT=Development ^
-v %APPDATA%/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro ^
company/image:latest
Run Code Online (Sandbox Code Playgroud)
docker-compose 的示例:
version: "3.8"
..
net_core_service:
..
environment:
# should be defined Development-env to allow loading user-secrets located on the local computer.
- ASPNETCORE_ENVIRONMENT=Development
..
volumes:
# map the dotnet user-secret folder
- $APPDATA/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
..
..
Run Code Online (Sandbox Code Playgroud)
环境变量更好 - https://12factor.net/config
docker run如果您使用use-e或option运行 docker --env-file:
https://docs.docker.com/engine/reference/run/#env-environment-variables
docker-compose如果您使用useenvironment或env_filekey
运行 docker :https: //docs.docker.com/compose/environment-variables/
出于生产目的,您需要使用环境变量,而不是 use-secrets。通过帮助防止敏感数据存储在代码中/签入源代码控制,秘密仅用于在开发过程中安全存储:
Secret Manager 工具不会加密存储的机密,不应将其视为受信任的存储。它仅用于开发目的。键和值存储在用户配置文件目录中的 JSON 配置文件中。
作为环境变量的替代方案,您可以考虑使用“外部”键值存储,例如Consul、Vault等。
关于docker中的环境变量,SO已经有相关的问题/答案。请参阅如何将环境变量传递给 docker 容器?作为例子。
| 归档时间: |
|
| 查看次数: |
5289 次 |
| 最近记录: |