проект git clone с использованием переменной env - PullRequest
0 голосов
/ 26 мая 2018

У меня есть Dockerfile, который git клонирует проект, подобный следующему:

...
RUN git clone -b 027-infra http://201.57.129.38/arbitrium/api.git
...

Я хочу заменить 027-infra (нужную ветвь проекта) переменной среды, но в соответствии с документамиhttps://docs.docker.com/engine/reference/builder/#environment-replacement кажется, что инструкция RUN не поддерживает переменные env.Понятия не имею, почему!

Как я могу клонировать проект, используя внешнюю переменную для выбора ветви?

Другая информация:

  • Хранилище является открытым иОткрытый исходный код.Никаких проблем с ssh-ключами или чем-то еще.
  • Я использую docker-compose с 3 сервисами, 2 из них git clone, 2 разных репозитория.В конце я хотел бы использовать одну переменную, чтобы обе службы извлекали одно и то же имя ветви, но в разных репозиториях.Вот почему я не могу использовать COPY, потому что это будет иметь контекст только для первого репозитория.

Обновление:

Не удалось заставить работать переменные env, ноЯ сделал с аргументами.Похоже, мне нужно было добавить вызов ARG, чтобы принять аргумент во время сборки контейнера:

...
ARG GIT_BRANCH
RUN git clone -b ${GIT_BRANCH} http://201.57.129.38/arbitrium/web.git
...

и вызвать сборку либо с docker-compose build, либо как эти docker build --build-arg GIT_BRANCH=027-infra -t arbitrium_api:latest -f Dockerfile_api .

Stillне понимаю, почему переменные env не заменяются при запуске git clone.

1 Ответ

0 голосов
/ 26 мая 2018

Сказать, что RUN "не поддерживает" переменные окружения, немного ошибочно.Для всех практических целей он поддерживает их, но поддержка реализуется оболочкой, которая RUN порождает, а не анализатором Dockerfile.

Так что просто используйте переменную среды, как вы планировали, прежде чем читатьдокументы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...