首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用docker从另一个存储库安装自定义模块

如何使用docker从另一个存储库安装自定义模块
EN

Stack Overflow用户
提问于 2018-06-08 23:50:23
回答 2查看 173关注 0票数 0

我在将来自另一个存储库的自定义模块安装到此project_name时遇到了一些问题。当我使用PyCharm时,一切都很好。那么,如何在docker中使用ssh部署密钥安装来自另一个存储库的自定义模块呢?

项目结构:

代码语言:javascript
复制
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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

我在终端中有异常:

代码语言:javascript
复制
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

当我想要像在Gitlab SSH URL中那样使用pip install git+ssh://git@gitlab.ru:username/repo_name.git时,这是错误的。错误:无法从远程存储库读取。

EN

回答 2

Stack Overflow用户

发布于 2018-06-09 03:43:55

尝试将gitlab主机密钥回显到已知主机:

代码语言:javascript
复制
RUN ssh-keyscan gitlab.ru >> ~/.ssh/known_hosts

有关https://docs.gitlab.com/ee/ci/ssh_keys/的更多信息。

如果您正在从公共存储库安装模块,您可以尝试使用https而不是ssh:

代码语言:javascript
复制
pip3 install git+https://gitlab.ru/username/repo_name.git
票数 0
EN

Stack Overflow用户

发布于 2020-09-21 20:55:41

我也有类似的问题,但项目结构不同。为了完整起见,我在这里添加我的解决方案。

如果您具有以下文件结构:

代码语言:javascript
复制
project_name
|-core
|  |-models
|  |  |- __init__.py
|  |  |- ...py
|  |-start.py
|-requierements
|  |- prod.txt
|  |- dev.txt
|- Dockerfile
|- Makefile
|- ...

其中依赖项存储在文件prod.txtdev.txt上。您还可以在任一txt文件中使用以下语句创建对分支的依赖关系:

custom_module @ git+ssh://gitlab.skytracking.ru/username/custom_module.git@branch#egg=custom_module-0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50764269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档