Оказывается, моя проблема была довольно глупой: я поставил <script href="">
вместо <script src="">
Мой ключ был защищен паролем, который вызывал проблему, теперь приведен рабочий файл (для помощи будущим гуглерам)
FROM ubuntu
MAINTAINER Luke Crooks "luke@pumalo.org"
# Update aptitude with new repo
RUN apt-get update
# Install software
RUN apt-get install -y git
# Make ssh dir
RUN mkdir /root/.ssh/
# Copy over private key, and set permissions
ADD id_rsa /root/.ssh/id_rsa
# Create known_hosts
RUN touch /root/.ssh/known_hosts
# Add bitbuckets key
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
# Clone the conf files into the docker container
RUN git clone git@bitbucket.org:User/repo.git
Вы должны создать новый SSH-ключ для этого образа Docker, поскольку вы, вероятно, не хотите вставлять туда свой собственный закрытый ключ. Чтобы он работал, вам придется добавить этот ключ к ключам развертывания в вашем репозитории git. Вот полный рецепт:
ssh-keygen -q -t rsa -N '' -f repo-key
, которые предоставят вам файлы repo-key и repo-key.pub. ADD repo-key / RUN \ chmod 600 /repo-key && \ echo "IdentityFile /repo-key" >> /etc/ssh/ssh_config && \ echo -e "StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \ // your git clone commands here...
Обратите внимание, что выше отключается StrictHostKeyChecking, поэтому вам не нужны .ssh / known_hosts. Хотя мне, вероятно, больше нравится решение с ssh-keyscan в одном из ответов выше.
Не нужно возиться с конфигурациями ssh. Используйте файл конфигурации (а не файл Docker), который содержит переменные среды, а также сценарий оболочки обновляет файл докеров во время выполнения. Вы сохраняете токены из своих Dockerfiles, и вы можете клонировать через https (нет необходимости генерировать или передавать файлы ssh).
Перейти к Настройки> Точки доступа к персональному компьютеру
repo
. git clone https://MY_TOKEN@github.com/user-or-org/repo
Некоторые комментаторы отметили, что если вы используйте общий файл Docker, это может открыть ваш ключ доступа другим людям в вашем проекте. Хотя это может быть или не быть проблемой для вашего конкретного случая использования, вот несколько способов, которыми вы можете справиться с этим:
sed
или аналогичную, то есть вызовите скрипт с sh rundocker.sh MYTOKEN=foo
, который заменит на https://{{MY_TOKEN}}@github.com/user-or-org/repo
. Обратите внимание, что вы также можете использовать файл конфигурации (в формате .yml или любом другом формате), чтобы сделать то же самое, но с переменными среды. Для репозитория Bitbucket сгенерируйте пароль приложения (настройки Bitbucket -> Управление доступом -> Пароль приложения, см. изображение) с доступом для чтения к репо и проекту.
Тогда команда, которую вы должны использовать, это:
git clone https://username:generated_password@bitbucket.org/reponame/projectname.git