Подтвердить что ты не робот

Dockerfile для клонирования частного git repo

Я пытаюсь клонировать частный репозиторий git из github. Я сделал Dockerfile следующим образом:

FROM ubuntu:12.04

RUN apt-get update
RUN apt-get install -y git
RUN mkdir -p /root/.ssh/
ADD ./id_rsa /root/.ssh/id_rsa
RUN git clone [email protected]:usr/repo.git

Я использую это репо с этим ключом, просто отлично локальным, так что кажется, что у меня что-то отсутствует в докере.

Еще одна вещь, которую я могу упустить, заключается в том, что как ~, так и $HOME внутри docker указывают на / вместо /root, но я не уверен, что это может быть связано.

4b9b3361

Ответ 1

Какой результат процесса сборки?

Случайное предположение: попробуйте chmod 600 закрытый ключ.

Если он все еще не работает, попробуйте RUN ssh -v [email protected] (после добавления ключа); результат должен объяснить, что происходит.

Ответ 2

RUN ssh-keyscan github.com → ~/.ssh/known_hosts

Keyscan отлично работает, так как он принимает хост. Был выполнен следующий полный ответ:

RUN mkdir -p /root/.ssh
RUN cp /var/my-app/id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts

Также, как упоминалось:

RUN ssh -v [email protected]

^ Отличный способ отладки потока. Вот как я понял, что мне нужен keyscan → known_hosts

Ответ 3

(вероятно, не соответствует вашим потребностям)

Существует другой подход: fooobar.com/info/37136/...

Перейдите в Настройки > Листы персонального доступа и создайте токен персонального доступа с включенной областью repo. Теперь вы можете сделать git clone https://[email protected]/user-or-org/repo

Плюсы:

  • очень простой подход
  • токен можно легко отменить

Минусы:

  • Если у кого-то есть доступ к Dockerfile, у него есть доступ к токену

Чтобы исправить это, вы можете использовать переменную среды для хранения токена