У меня есть служба docker (внутри роя), которая использует два секрета в качестве переменных среды (сертификат подписи и пароль для сертификата)
Секреты создаются с помощью этих команд:
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 -компонент на это, он работает нормально:
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