В Docker выдает ошибку git-lfs: учетные данные для https://github. ... не найдены - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь вытащить большие файлы в Docker-контейнер из git с помощью git-lfs.К сожалению, я продолжаю получать сообщение об ошибке:

...

 ---> f07e7087dc5a
Step 13/16 : RUN git lfs pull
 ---> Running in a387e389eebd
batch response: Git credentials for https://github.XXXX.edu/XXXXX/XXXXXXXXX.git not found.
error: failed to fetch some objects from 'https://github.XXXX.edu/XXXXX/XXXXXXXXX.git/info/lfs'
The command '/bin/sh -c git lfs pull' returned a non-zero code: 2

Есть идеи, как это исправить и получить мои файлы вытащил правильно и без ошибок?Я запускаю следующее в Docker, чтобы попытаться заставить работать git-lfs:

# Get git-lfs and pull down the large files
RUN apt-get update && apt-get install -y apt-utils && apt-get install -y curl
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
RUN apt-get install -y git-lfs
RUN git lfs install
RUN git lfs pull

Я также добавляю свой файл .gitattributes и .git в образ Docker.

РЕДАКТИРОВАТЬ : Можно ли как-нибудь использовать:

https://you:password@github.com/you/example.git

или

git config remote.origin.url https://you:password@github.com/you/example.git

1 Ответ

0 голосов
/ 26 июня 2018

Может быть, я смогу использовать https://you:password@github.com/you/example.git:

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

Лучше сделать многоэтапную сборку, как описано в " Доступ к частным репозиториям из вашего Dockerfile, не оставляя позади ваши SSH-ключи ".

Вместо этого он использует SSH-ключимени пользователя / пароля, потому что:

  • вы можете сгенерировать и зарегистрировать ключ SSH, выделенный для вашей сборки Docker.
  • вы можете отозвать этот ключ в любое время, так как он используется только for this docker build (в отличие от пароля для доступа к учетным данным, который вы не можете легко изменить, не влияя, возможно, на другие сценарии, использующие указанный пароль)

Ваш файл Docker будет выглядеть так:

# this is our first build stage, it will not persist in the final image
FROM ubuntu as intermediate

# install git
RUN apt-get update
RUN apt-get install -y git

# add credentials on build
ARG SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/
RUN echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_rsa

# make sure your domain is accepted
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

RUN git clone git@bitbucket.org:your-user/your-repo.git

FROM ubuntu
# copy the repository form the previous image
COPY --from=intermediate /your-repo /srv/your-repo
# ... actually use the repo :)
...