Можно ли использовать частный репозиторий git (hub) в Dockerfile ADD?

Есть множество вопросов о клонирование репозитория git в контейнер путем установки git и последующего клонирования. Мне интересно сделать что-то вроде этого, где они используют URL-адрес GitHub в команде ADD.

Очевидно, что это всего лишь общедоступный URL.

Можно ли использовать что-то вроде git поверх ssh или scp или что-то в моем Dockerfile для загрузки файлов в мой образ?


person Wayne Werner    schedule 07.01.2015    source источник
comment
Можете ли вы дать больше информации о вашем прецеденте? Я почти уверен, что вы на самом деле не хотите этого, потому что ключ, с которым вы будете аутентифицироваться, будет доступен любому, у кого есть доступ к вашему образу докера или запущенному из него контейнеру.   -  person Eli    schedule 07.01.2015
comment
У меня есть код в git/hg, и я хочу поместить его в контейнер докеров, но я не хочу требовать git/hg в этом контейнере. Имеет ли это смысл?   -  person Wayne Werner    schedule 07.01.2015


Ответы (2)


Это пока невозможно, потому что сборка докеров не поддерживает параметры времени сборки, хотя я думаю, что эта функция может появиться в ближайшее время. На данный момент вам нужно выполнить сборку с использованием контекста докера.

Например, если вы посмотрите на то, как работает автоматическая сборка hub.docker.com, вы должны добавить ключ развертывания в репозиторий github, который позволит их серверам сборки читать это репо.

person Abdullah Jibaly    schedule 07.01.2015

Учитывая разъяснение в комментариях OP о том, что он просто пытается получить код git в Docker, самый простой способ сделать это — использовать репозиторий git в качестве контекста для файла сборки докера. Например, если я хочу, чтобы код из моего репозитория был добавлен в /usr/local/git/my_repo в образе докера, я бы поместил файл Dockerfile в корень своего образа и сделал:

ADD ./ /usr/local/git/my_repo

Если вам нужно добавить какое-то другое репо, обычно это то, что вы хотите, чтобы ваша система автоматизации (например, Ansible, Puppet, Chef и т. Д.) Обрабатывала. Попросите вашу систему автоматизации извлечь все необходимые вам репозитории, а затем переместите файл Dockerfile в корневую папку, содержащую все необходимые репозитории, и сделайте это (при условии, что вы хотите, чтобы все они находились в папке с именем «my_repos» на изображении) :

ADD ./ /my_repos

Вы можете расширить эту идею здесь, но основной tl;dr; Чтобы избавиться от этого, лучше и проще всего добавить материал в образ Docker в качестве контекста и позволить вашей системе автоматизации обрабатывать аутентификацию и процессы, необходимые для первоначального получения всего, что вы хотите добавить, и упорядочить его в файле Docker, из которого находится ваше здание.

person Eli    schedule 07.01.2015
comment
Основная причина, по которой я хотел чего-то другого, чем ваша идея, заключается в том, что я не беспокоился о том, где файлы были локально - если кто-то сказал, учетные данные SSH, они могли бы построить из Dockerfile, а у меня не было беспокоиться о том, где они размещают свой репозиторий кода. Хотя теперь, когда я уклоняюсь от этого, я думаю, что добавление было бы действительно работать. - person Wayne Werner; 08.01.2015