Назад | Перейти на главную страницу

Может ли версия Docker FROM включать переменные?

Я подозреваю, что ответ на этот вопрос отрицательный, поскольку команда FROM идет первой в файле (перед любыми операторами ENV), но можете ли вы параметризовать версию базового образа, из которого создается контейнер докера?

например

FROM image-name:4.6.${patchVersion}

Причина, по которой я смотрю на это, - поддержка CI / CD. Я разделил контейнер сборки и контейнер развертывания, а patchVersion контейнера развертывания генерируется сборкой. Я также хотел бы таким образом сгенерировать номер патча контейнера сборки, а затем ссылаться на него из контейнера развертывания

TL; DR не только с Docker

Длинный:

В документации говорится:

Переменные среды поддерживаются следующим списком инструкций в Dockerfile:

  • ДОБАВИТЬ
  • КОПИРОВАТЬ
  • ENV
  • ВЫБРАТЬ
  • МЕТКА
  • ПОЛЬЗОВАТЕЛЬ
  • WORKDIR
  • ОБЪЕМ
  • ОСТАНОВИТЬ

https://docs.docker.com/engine/reference/builder/#environment-replacement

Ты можешь использовать envsubst https://linux.die.net/man/1/envsubst переписать ваш Dockerfile прежде чем делать docker build

envsubst < Dockerfile.template_with_variable > Dockerfile
docker build .