Как установить pip частный репозиторий, который имеет частный подмодуль в сборке Docker? - PullRequest
0 голосов
/ 14 декабря 2018

Я строю проект, который требует некоторых зависимостей от частных репозиториев Python.Это репо имеет внутри подмодуля, который также указывает на частное репо.Я могу получить его на своей машине, используя ssh-ключ, который неудобен внутри контейнера.

В моем файле dockerfile я блокирую на этом шаге:

RUN pip3 install wheel \
  && pip3 wheel git+https://${GITHUB_TOKEN}@github.com/owner/repo.git@master \
--wheel-dir=/svc/wheels

Он может получить репо безпроблема, но не может обработать подмодуль.Я полагаю, что pip разрешает URL и не передает изначально переданный токен.

Я не знаю, как обойти проблему.Я мог бы иметь папку локально и скопировать ее, или настроить частное хранилище пипов, к которому я бы имел доступ во время сборки (если это возможно), или использовать ssh-ключи внутри контейнера (звучит как ужасный подход ко мне).

Есть ли "стандартный способ сделать это"?Если нет, то что бы вы предложили?

EDIT1: это похоже на проблему с git, так как git clone --recursive не работает и

ОТВЕТ: Сначала я потребовал использовать netrc, как было предложено, и обнаружилвопрос в моей декларации субмодуля.Он был настроен с использованием ssh.url = git@github.com: вместо url = https://github.com/.Спасибо, что потратили время и силы на его тестирование.Я приму ответ larsks, который направил меня к нему

1 Ответ

0 голосов
/ 14 декабря 2018

Вместо передачи ${GITHUB_TOKEN) в командной строке вы сможете сконфигурировать его в файл .netrc, как описано, например, в этом ответе .

Ваш Dockerfileбудет включать в себя что-то вроде:

RUN echo machine github.com login ${GITHUB_TOKEN} > ~/.netrc
RUN pip3 install wheel \
  && pip3 wheel git+https://github.com/owner/repo.git@master \
--wheel-dir=/svc/wheels
...