Использование многострочного значения в файле .env в docker-compose - PullRequest
0 голосов
/ 06 июня 2019

У меня есть установщик, который выкачивает некоторые значения в файл .env, который будет использоваться docker-compose.До сих пор все это работало, за исключением ключа SSH, который, казалось бы, не может использоваться.

До сих пор я пробовал как с правильно отформатированным закрытым ключом, так и с заменой новых строк на \n.Однако это нарушает рабочий процесс дальше по линии и не отображается с использованием printenv внутри контейнера в качестве многострочной переменной, которая требуется.

docker-compose.yml

myservice:
  build: .
  environment:
    - SSH_KEY
    - SINGLE_LINE_VALUE

.env (игнорируйте явно сломанный sshkey)

SINGLE_LINE_VALUE=I Load just fine
SSH_KEY="---------------
ABCDEFGH
--------------------
"

к моменту запуска контейнера значение среды для SSH_KEY просто "---------------

Любые идеи очень ценятся.

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Возможно, не самое лучшее решение, но, по крайней мере, работает.

.env

KEY="--------------- \n ABCDEFGH \n --------------------"

докер-compose.yml

version: '3'

services:
  test:
    image: ubuntu
    environment:
      - SSH_KEY=$KEY
    command: bash -c "echo \"$${SSH_KEY}\" | perl -pe 's/\\\n/\n/g' "

$$ означает экранирование для знака доллара, поэтому docker-compose не будет оценивать эту переменную в файле .yml, но во время выполнения

требуется замена perl, так как docker-compose автоматически добавляет экранирующие косые черты в символы новой строки.

0 голосов
/ 06 июня 2019

Вы можете найти решение здесь .

В вашем случае вам нужно будет указать имя файла в вашем файле .env.Затем в файле docker-compose вам просто нужно экспортировать переменную, используя решение.

...