При попытке использовать docker -compose он не считывает экспортированные переменные среды из хост-системы.
Полный код на момент написания можно найти здесь .
$ docker info
Client: Docker Engine - Community
Version: 19.03.6
API version: 1.40
Go version: go1.12.16
Git commit: 369ce74a3c
Built: Thu Feb 13 01:27:58 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:29:16 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
$ docker-compose info
docker-compose version 1.21.0, build unknown
docker-py version: 3.4.1
CPython version: 3.7.3
OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
В частности, меня интересует файл docker-compose.yml
и его раздел environment
version: "3"
...
environment:
- FERRO_MONGO_HOST=ferro-mongo
- FERRO_MONGO_USER=ferrothorn
- FERRO_MONGO_PASS=ferrothorn-local
- FERRO_MONGO_BASE=ferrothorn
- FERRO_LOG_LEVEL=1
- FERRO_SECRET
При вызове docker-compose up
переменные окружения устанавливаются так, как я ожидаю, что они будут смотреть на файл docker comppose. Однако если я экспортирую некоторую переменную, эта переменная, экспортируемая в оболочку, не будет использоваться по умолчанию, определенному в файле docker -compose. Это касается таких переменных, как FERRO_SECRET
, которые не имеют значения по умолчанию, и FERRO_LOG_LEVEL
, где установлено значение по умолчанию.
Используемая мной последовательность команд выглядит как
export FERRO_SECRET=very_secret_pw
export FERRO_LOG_LEVEL=2
docker-compose up --build # tried with and without --build flag
и это просто ... не работает? Я также попытался использовать этот трюк, который я видел в Интернете
FERRO_SECRET=very_secret_pw FERRO_LOG_LEVEL=2 docker-compose up --build
, но без игры в кости.
Поскольку этот блок на самом деле является экземпляром wsl, работающим на windows 10 с использованием сервера localhost docker, я подумал, что это может быть некоторой ошибкой, но воссоздав эти шаги в windows powershell на той же машине дает те же результаты, что и при сборке на обычном сервере fedora-server
Я неправильно устанавливаю переменную среды? Кажется, я помню, как делал это до где-то , и оно работало, есть какая-то ошибка в этой docker -композитной версии или в моей конфигурации?