我有一个 docker 服务(在 swarm 内),它使用两个秘密作为环境变量(证书的签名证书和密码)
秘密是使用以下命令创建的:
docker secret create signing-certificate signing-certificate.pfx
echo "mypassword" | docker secret create signing-certificate-password -
docker-compose.yml:
version: '3.7'
secrets:
signing-certificate:
external: true
signing-certificate-password:
external: true
services:
login:
image: registry.mydomain.com/login:latest
secrets:
- signing-certificate
- signing-certificate-password
environment:
- KeyFilePath=/run/secrets/signing-certificate
- KeyFilePassword=/run/secrets/signing-certificate-password
在 (.netcore-) 服务中,我使用以下代码检索变量:
var certPassword = Environment.GetEnvironmentVariable("KeyFilePassword");
var certPath = Environment.GetEnvironmentVariable("KeyFilePath");
证书本身工作得很好,并且存在于服务中。问题是密码:它是一个空字符串。
如果我将 docker-compose 更改为此它可以正常工作:
environment:
- KeyFilePath=/run/secrets/signing-certificate
- KeyFilePassword=mypassword
所以我怀疑安装飞机文本秘密有些奇怪。
我还尝试了这些命令来创建秘密:
echo mypassword | docker secret create signing-certificate-password -
echo 'mypassword | docker secret create signing-certificate-password -
printf mypassword | docker secret create signing-certificate-password -
知道我在做什么错吗?或者它可能是一个错误?
Docker-Version: 19.03.8
Kernel Version: 4.15.0-96-generic Operating
System: Ubuntu 18.04.4 LTS