Проблемы с передачей переменных в docker-compose cli

Всем привет.

Есть у меня такой docker-compose:

version: '3.6'

services:
  redis2:
    image: redis:5
    ports:
      - ${PORT}:6379

Я его запускаю с помощью cli: docker-compose run -e PORT=6379 -d redis2

Получаю ошибку: The "PORT" variable is not set. Defaulting to a blank string.

Но какого? Это должно работать согласно документации...


Ответы (1 шт):

Автор решения: Exploding Kitten

Флаг -e в команде docker-compose позволяет устанавливать переменные окружения внутри контейнера (https://docs.docker.com/compose/reference/run/), т.е. запустите контейнер и выполните в нем echo $PORT, тогда вы и увидете нужно значение.

Если же вам нужно передать порт в docker-compose команду (чтобы это использовать в docker-compose.yml файле как параметр), вы можете задать значение этого параметра перед командой, например (этот синтаксис работает в bash на Linux/WSL/MacOS, для CMD/PowerShell скорее всего нужно что-то другое):

PORT=6379 docker-compose run -d redis2

или если вам нужно определить переменную отдельно, то можно:

export PORT=6379
docker-compose run -d redis2
→ Ссылка