Развертывание стека в Docker с использованием подстановки переменных - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь развернуть стек в докере, используя подстановку переменных, но когда я запускаю docker stack deploy --compose-file email.yaml email, я получаю неверный формат ссылки ошибка. Вот это мой email.yaml:

version: '3' 
services:   
  emailservice:
    image: 'email:${VERSION}'
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
      resources:
        limits:
          memory: 300 MB
      update_config:
        delay: 12s
    ports:
     - "8000:80"

Я пробовал email:${VERSION} и "email:${VERSION}", но это тоже не работает.

С другой стороны, я прочитал, что в развертывании стека докеров я не могу использовать файл .env для передачи переменных. Как мне их передать ??

Спасибо!

1 Ответ

0 голосов
/ 16 августа 2019

Docker Compose автоматически загружает .env файл, но docker stack deploy - нет (см. Примечание в разделе Подстановка переменной в справочном файле Compose).

Это можно обойти,использование env VAR=VALUE в той же строке, что и docker stack deploy:

$ env VERSION=1.2 docker stack deploy -c email.yaml email

Синтаксис, который вы использовали, правильный, но из-за отсутствующей подстановки возникает ошибка, которую вы видите.

В качестве альтернативы,Вы можете принудительно определить переменную, используя синтаксическое требование ${VERSION:?}, которое остановит развертывание и отобразит ошибку, легко связанную с отсутствующей переменной:

$ docker stack deploy -c email.yaml email
invalid interpolation format for services.emailservice.image: "required variable VERSION is missing a value: ". You may need to escape any $ with another $.

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...