Докер, не использующий объем с докер-составом [дубликат]

Оказывается, моя проблема была довольно глупой: я поставил <script href=""> вместо <script src="">

192
задан Samuel Bolduc 12 April 2016 в 17:47
поделиться

4 ответа

Мой ключ был защищен паролем, который вызывал проблему, теперь приведен рабочий файл (для помощи будущим гуглерам)

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
249
ответ дан crooksey 31 August 2018 в 10:56
поделиться

Вы должны создать новый SSH-ключ для этого образа Docker, поскольку вы, вероятно, не хотите вставлять туда свой собственный закрытый ключ. Чтобы он работал, вам придется добавить этот ключ к ключам развертывания в вашем репозитории git. Вот полный рецепт:

  1. Сгенерировать ключи ssh с помощью ssh-keygen -q -t rsa -N '' -f repo-key, которые предоставят вам файлы repo-key и repo-key.pub.
  2. Добавьте repo-key.pub в ваши ключи развертывания репозитория. В GitHub перейдите в [ваш репозиторий] -> Настройки -> Развернуть ключи
  3. Добавьте что-то подобное в свой файл Docker:
    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 в одном из ответов выше.

79
ответ дан Marcin R 31 August 2018 в 10:56
поделиться

Не нужно возиться с конфигурациями ssh. Используйте файл конфигурации (а не файл Docker), который содержит переменные среды, а также сценарий оболочки обновляет файл докеров во время выполнения. Вы сохраняете токены из своих Dockerfiles, и вы можете клонировать через https (нет необходимости генерировать или передавать файлы ssh).

Перейти к Настройки> Точки доступа к персональному компьютеру

  • Создайте токен персонального доступа с включенной областью repo.
  • Клонировать следующим образом: git clone https://MY_TOKEN@github.com/user-or-org/repo

Некоторые комментаторы отметили, что если вы используйте общий файл Docker, это может открыть ваш ключ доступа другим людям в вашем проекте. Хотя это может быть или не быть проблемой для вашего конкретного случая использования, вот несколько способов, которыми вы можете справиться с этим:

  • Использовать сценарий оболочки для принятия аргументов, которые могут содержать ваш ключ как переменную , Замените переменную в файле Docker на sed или аналогичную, то есть вызовите скрипт с sh rundocker.sh MYTOKEN=foo, который заменит на https://{{MY_TOKEN}}@github.com/user-or-org/repo. Обратите внимание, что вы также можете использовать файл конфигурации (в формате .yml или любом другом формате), чтобы сделать то же самое, но с переменными среды.
  • Создайте пользователя github (и создайте токен доступа для) для этого только проект
56
ответ дан Nick 31 August 2018 в 10:56
поделиться

Для репозитория Bitbucket сгенерируйте пароль приложения (настройки Bitbucket -> Управление доступом -> Пароль приложения, см. изображение) с доступом для чтения к репо и проекту.

Тогда команда, которую вы должны использовать, это:

git clone https://username:generated_password@bitbucket.org/reponame/projectname.git
10
ответ дан Nomce 31 August 2018 в 10:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: