Передача env var из docker run cmd внутри jenkinsfile в dockerfie

Я пытаюсь передать переменную из файла jenkinsfile в файл докеров. Итак, я запускаю команду запуска докера внутри jenkinsfile:

 steps {
          checkout scm
          sh '''
          echo ${GIT_BRANCH}
          mkdir -p `pwd`/build_target
          docker build -t android_build -f docker/Dockerfile.android .
          docker run --env GIT_BRANCH=${GIT_BRANCH} android_build
          ls -la `pwd`/build_target/*
       '''

И попробуйте использовать переменную env внутри dockerfile:

 FROM openjdk:8u212-jdk

 USER root
 ENV GIT_BRANCH $GIT_BRANCH
 RUN echo ${GIT_BRANCH}
 RUN if [ "GIT_BRANCH" = "develop" ] ; then echo 'develop' ; else if  [ "GIT_BRANCH" = "master" ] ; then echo 'aster' ; fi

Но, к сожалению, это не работает и приводит к сбою конвейера, поскольку он не может получить env var. Что не так с моим кодом???

В вашей команде docker run ... отсутствует название изображения (android_build)

DazWilkin 05.04.2019 06:13

Dockerfile читается во время строки docker build; у него нет возможности считывать переменные окружения из будущего.

David Maze 05.04.2019 06:13

@DazWilkin просто неудачная копия моего кода, я отредактировал код

Youssef Harkati 05.04.2019 06:19

@DavidMaze извините, но я не понимаю, что вы сказали

Youssef Harkati 05.04.2019 06:20

Удалите последние две строки шага скрипта, и вы получите точно такую ​​же ошибку; он никогда не достигает линии docker run.

David Maze 05.04.2019 06:22

@DavidMaze, я думаю, вы ошибаетесь, переменные среды можно передавать во время выполнения

Youssef Harkati 05.04.2019 13:54

Однако среда выполнения Dockerfile не еще до этого. Ничего из того, что вы передаете в команде docker run, не отображается в Dockerfile, потому что Dockerfile происходит первым.

David Maze 05.04.2019 17:19
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
7
756
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я закончил тем, что зафиксировал переменную во время сборки с помощью флага --build-arg, после чего я смог использовать ее внутри файла докеров. Надеюсь, это поможет кому-то когда-нибудь

Другие вопросы по теме