Как установить пользовательские модули из другого репо с помощью докера - PullRequest
0 голосов
/ 08 июня 2018

У меня возникла проблема с установкой пользовательских модулей из другого репозитория в это имя проекта.Это все хорошо, когда я использую PyCharm.Итак, как я могу установить пользовательские модули из другого репозитория, используя ключи ssh deploy в Docker?

Структура проекта:

project_name
|-core
|  |-models
|  |  |- __init__.py
|  |  |- ...py
|  |-start.py
|  |-Dockerfiles
|  |  |- Dockerfile
|  |  |- id_rsa
|  |  |- id_rsa.pub
|  |  |- ssh.config
|  |-start.py
|- config.py 
|- setup.py

Setup.py

from setuptools import setup, find_packages
from os.path import join, dirname

setup(
   name='core',
   version='0.1',
   url='https://gitlab.ru/username/repo_name.git',
   install_requires=['custom_module>=0.1',
                     'sqlalchemy>=1.2.2',
                     'redis>=2.10.0',
                     'hiredis>=0.2',
                     'python-socketio',
                     'aioredis',
                     'psycopg2',
                     'alembic',
                     'flask',
                     'flask-admin',
                     'flask_basicauth'],
  dependency_links=['git+ssh://git@gitlab.ru/username/custom_module.git'],
  include_package_data=True,
  packages=find_packages(),
  entry_points={
     'console_scripts':
         ['core = core.start']
      }
)

Dockerfile:

FROM python:3.6
RUN mkdir -p /var/project_name
RUN mkdir -p ~/.ssh

RUN apt install -y  openssh-client git

COPY . /var/project_name/
COPY Dockerfiles/id_rsa /var/HEAVEN-CORE/id_rsa
COPY Dockerfiles/id_rsa.pub /var/HEAVEN-CORE/id_rsa.pub
COPY Dockerfiles/ssh.config /var/HEAVEN-CORE/ssh.config

RUN cat /var/project_name/id_rsa > ~/.ssh/id_rsa
RUN cat /var/project_name/id_rsa.pub > ~/.ssh/id_rsa.pub
RUN cat /var/project_name/ssh.config > ~/.ssh/config

RUN eval `ssh-agent -s` && chmod 0600 ~/.ssh/id_rsa  && ssh-add 
~/.ssh/id_rsa && cd /var/project_name  && pip3 install 
git+ssh://git@gitlab.ru/username/repo_name.git 

ENV PYTHONPATH $PYTHONPATH:/var/project_name

WORKDIR /var/project_name

У меня есть исключение в терминале:

Collecting git+ssh://git@gitlab.ru/username/repo_name.git
Cloning ssh://git@gitlab.ru/username/repo_name.git to 
/tmp/pip-req-build-0m86uyex

Warning: Permanently added 'gitlab.ru,62.76.114.78' 
(ECDSA) to the list of known hosts.

Collecting git+ssh://git@gitlab.ru/username/custom_module.git
Cloning ssh://git@gitlab.ru/username/custom_module.git to 
/tmp/pip-req-build-zu7jupsg

Collecting custom_module>=0.1 (from core==0.1)
Could not find a version that satisfies the requirement 
custom_module>=0.1 (from core==0.1) (from versions: )

No matching distribution found for custom_module>=0.1 (from core==0.1) 
ERROR: Service 'core' failed to build: The command '/bin/sh -c eval 
`ssh-agent -s` && chmod 0600 ~/.ssh/id_rsa  && ssh-add ~/.ssh/id_rsa 
&& cd /var/project_name  && pip3 install 
git+ssh://git@gitlab.ru/username/repo_name.git' returned a 
non-zero code: 1

Это неправильно, когда я хочу использовать pip install git + ssh: //git@gitlab.ru: username / repo_name.Git, как в Gitlab SSH URL.Ошибка: не удалось прочитать из удаленного хранилища.

Ответы [ 2 ]

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

Возможно, это поможет кому-то еще.Я решил эту проблему

install_requires=['custom_module',
                  ...
                  ],
dependency_links=['git+ssh://gitlab.skytracking.ru/username/custom_module.git@branch#egg=custom_module-0']

@ branch = это ваша ветвь (master или что-то еще).В конце добавьте -0 , а не версию.

Добавьте это, вы можете установить пользовательские модули из частного репозитория

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

Попробуйте передать ключ хоста gitlab на известные хосты:

RUN ssh-keyscan gitlab.ru >> ~/.ssh/known_hosts

Подробнее о https://docs.gitlab.com/ee/ci/ssh_keys/.

Если вы устанавливаете модуль из общедоступного репозитория, вы можете попробовать через httpsвместо ssh:

pip3 install git+https://gitlab.ru/username/repo_name.git
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...