docker - 在 docker-compose.yml 配置中使用 Docker 秘密值
问题描述
我们正在使用 Docker swarm 来部署服务。我们想使用 Docker swarm secrets 来存储敏感数据(证书密码)。是否可以在docker-compose.yml
文件中使用 Docker 机密值?Docker 客户端版本是20.10.6
,Docker 引擎版本是19.03.12
.
首先,我们在主机上创建秘密:
printf 'ThisIsCertificatePassword123' | docker secret create CertificatePassword -
码头工人-compose.yml
version: "3.7"
services:
web:
image: myimage:0.0.1
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: https://+443;http://+80
ASPNETCORE_HTTPS_PORT: 443
ASPNETCORE_Kestrel__Certificates__Default__Password: # how can we use value of CertificatePassword here?
ASPNETCORE_Kestrel__Certificates__Default__Path: /https/certificate.pfx
deploy:
replicas: 1
secrets:
CertificatePassword:
external: true
我们部署堆栈:
docker stack deploy -c docker-compose.yml MyApplication
我们如何CertificatePassword
在docker-compose.yml
(at ASPNETCORE_Kestrel__Certificates__Default__Password
) 中使用 Docker 机密的值?
解决方案
社区标准一直支持直接读取每个环境变量:“FOO”和间接“FOO_FILE”,其中 _FILE 变体是包含 FOO 的文件的路径。
所以,
SA_PASSWORD_FILE = /var/run/secrets/sql-password
SA_PASSWORD = Password123
应该是等价的,假设/var/run/secrets/sql-password
包含Password123
.
现在,我不知道 ASPNetCore 配置是否支持开箱即用,添加它似乎并不简单。
推荐阅读
- javascript - 如何动态地将函数数组添加到 javascript 函数中?
- html - 我们如何在 Angular 中预加载字体?
- ocaml - 为什么OCaml类型转换函数以“A_of_B”形式命名?
- .net - 如何使用 C#.NET API 或 Nuget 包运行 Sqlite CLI 点命令(不是 SQL)
- firebase - 限制用户可以调用firebase onCall 函数的次数?
- python - 为什么当我设置 useOptimized false 时执行时间更少
- scala - 在此示例代码中理解 Scala 以进行理解
- javascript - 如何在客户端 JS 中调试 406 HTTP 响应?
- c++ - 无法在 Visual Studio 2019 上包含 GLFW/glfw.h
- c++ - 如何在xml文件中循环n次,每个循环一级