Docker секрет монтирует пустую строку - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть служба 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
...