Как создать динамическую переменную env в Dockerfile?

Я использую Docker composé версии 1.5 или 6 и образ nginx. Я хочу параметризовать nginx.config. Для этого я хочу создать переменную из $(базовое имя некоторого пути). Но проблема в том, что Docker не принимает такие динамические переменные, как в env части Dockerfile. Другая проблема заключается в том, что я также не могу сопоставить эти переменные при запуске сборки, поскольку компоновка Docker не принимает динамические, скриптовые переменные. Как побороть эту проблему?

From nginx
ENV myvar=$(basename /)

Это невозможно построить образ.

Другой путь был

ARG myvar
ENV myvar2=myvar

Но моя версия Docker compose позволяет только установить

Environment: myvar=$(basename mypathinthevolume/)

Тоже вроде не работает


person kol23    schedule 14.07.2020    source источник
comment
пожалуйста, дайте нам больше информации, вставьте свой dockerfile и docker-compose хотя бы   -  person Sergio Tanaka    schedule 14.07.2020
comment
Вы смотрели на методы, подобные тому, что описано в Подстановка переменных среды в NGINX конфиг из docker-compose? Если вы создаете конфигурацию шаблона, а затем переписываете ее в точке входа вашего изображения, вы можете заменить контент, как хотите.   -  person David Maze    schedule 14.07.2020
comment
В конкретном примере $(basename /some/path), как правило, структура файловой системы контейнера Docker фиксирована, и в ней можно жестко закодировать пути. Если вы монтируете содержимое хоста с привязкой, укажите путь на стороне контейнера например, /data.   -  person David Maze    schedule 14.07.2020
comment
@ Дэвид Мейз, вот в чем проблема. Я не могу использовать статические пути, так как содержимое тома отличается, и мне нужно имя в конфигурации.   -  person kol23    schedule 14.07.2020
comment
Другое дело — я не могу использовать базовый образ nginx. Я использую FROM nginx, поэтому фактически я не могу сопоставить переменную в той же строке/контейнере, где выполняется nginx.   -  person kol23    schedule 14.07.2020