Ответ 1
Какой результат процесса сборки?
Случайное предположение: попробуйте chmod 600
закрытый ключ.
Если он все еще не работает, попробуйте RUN ssh -v [email protected]
(после добавления ключа); результат должен объяснить, что происходит.
Я пытаюсь клонировать частный репозиторий 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
, но я не уверен, что это может быть связано.
Какой результат процесса сборки?
Случайное предположение: попробуйте chmod 600
закрытый ключ.
Если он все еще не работает, попробуйте RUN ssh -v [email protected]
(после добавления ключа); результат должен объяснить, что происходит.
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
(вероятно, не соответствует вашим потребностям)
Существует другой подход: fooobar.com/info/37136/...
Перейдите в Настройки > Листы персонального доступа и создайте токен персонального доступа с включенной областью repo
.
Теперь вы можете сделать git clone https://[email protected]/user-or-org/repo
Плюсы:
Минусы:
Чтобы исправить это, вы можете использовать переменную среды для хранения токена