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 $.
Надеюсь, что это поможет.