python-3.x - 如何使用 docker 从另一个仓库安装自定义模块
问题描述
我在将自定义模块从另一个 repo 安装到这个 project_name 时遇到了一些问题。当我使用 PyCharm 时,一切都很好。那么,如何使用 docker 中的 ssh 部署密钥从另一个仓库安装自定义模块?
项目结构:
project_name
|-core
| |-models
| | |- __init__.py
| | |- ...py
| |-start.py
| |-Dockerfiles
| | |- Dockerfile
| | |- id_rsa
| | |- id_rsa.pub
| | |- ssh.config
| |-start.py
|- config.py
|- setup.py
安装程序.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
当我想像在 Gitlab SSH URL 中那样使用 pip install git+ssh://git@gitlab.ru:username/repo_name.git 时,这是错误的。错误:无法从远程存储库中读取。
解决方案
可能是帮助别人。我解决了这个问题
install_requires=['custom_module',
...
],
dependency_links=['git+ssh://gitlab.skytracking.ru/username/custom_module.git@branch#egg=custom_module-0']
@branch = 这是你的分支(master 或 smth else)。最后添加-0,而不是版本。
添加这个你可以从私人仓库安装自定义模块
推荐阅读
- linux - 超时一个 curl 命令 shell 脚本 centOS
- powershell - 在 PowerShell 窗口中确定特定 X、Y 坐标的背景颜色
- angular - 如何使用 jasmineSpy 测试 Angular 组件?
- python-3.x - 求解混合互补模型时出错
- javascript - 在 JavaScript 中使用 querySelector,而不是在 HTML 中工作
- c# - datagridview / autoresizecolumns 和 rows 的问题
- android - Android Studio gradle 中的重复值问题
- jenkins - 警告:身份文件 D:WorkKeyPairsDeployTech-O-Dex-APII 不可访问:没有这样的文件或目录
- python - 在 Python 中通过登录页面
- vue.js - Vue如何用组件替换大括号中的变量