<small id='2BHuM'></small><noframes id='2BHuM'>

      1. <legend id='2BHuM'><style id='2BHuM'><dir id='2BHuM'><q id='2BHuM'></q></dir></style></legend>
          <bdo id='2BHuM'></bdo><ul id='2BHuM'></ul>
        <i id='2BHuM'><tr id='2BHuM'><dt id='2BHuM'><q id='2BHuM'><span id='2BHuM'><b id='2BHuM'><form id='2BHuM'><ins id='2BHuM'></ins><ul id='2BHuM'></ul><sub id='2BHuM'></sub></form><legend id='2BHuM'></legend><bdo id='2BHuM'><pre id='2BHuM'><center id='2BHuM'></center></pre></bdo></b><th id='2BHuM'></th></span></q></dt></tr></i><div id='2BHuM'><tfoot id='2BHuM'></tfoot><dl id='2BHuM'><fieldset id='2BHuM'></fieldset></dl></div>
      2. <tfoot id='2BHuM'></tfoot>
      3. 在Docker构建过程中,PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码

        时间:2024-08-21

        <i id='W4GoN'><tr id='W4GoN'><dt id='W4GoN'><q id='W4GoN'><span id='W4GoN'><b id='W4GoN'><form id='W4GoN'><ins id='W4GoN'></ins><ul id='W4GoN'></ul><sub id='W4GoN'></sub></form><legend id='W4GoN'></legend><bdo id='W4GoN'><pre id='W4GoN'><center id='W4GoN'></center></pre></bdo></b><th id='W4GoN'></th></span></q></dt></tr></i><div id='W4GoN'><tfoot id='W4GoN'></tfoot><dl id='W4GoN'><fieldset id='W4GoN'></fieldset></dl></div>

        <tfoot id='W4GoN'></tfoot>
          <tbody id='W4GoN'></tbody>
        <legend id='W4GoN'><style id='W4GoN'><dir id='W4GoN'><q id='W4GoN'></q></dir></style></legend>

        1. <small id='W4GoN'></small><noframes id='W4GoN'>

                  <bdo id='W4GoN'></bdo><ul id='W4GoN'></ul>
                • 本文介绍了在Docker构建过程中,PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试在docker build命令期间通过pip安装(通过conda env create命令)来自BitBucket的自定义python包,而不输入SSH密码/密码。此问题与this other question类似,但不同,因为错误发生在docker build命令期间。

                  conda env create命令的环境.yml文件(在docker build期间)如下所示:

                  name: my_app
                  channels:
                    - defaults
                  dependencies:
                    - pip=21.2.2
                    - python=3.8.11
                    - pip:
                      - git+ssh://git@bitbucket.org/my_org/my_package_repo.git
                      - pandas==1.2.5
                      - python-dotenv==0.19.0
                      - xlrd==2.0.1
                  prefix: /usr/local/anaconda3/envs/my_app
                  

                  docker build尝试在Docker映像内构建conda环境时,我收到此错误:

                  Installing pip dependencies: ...working... Pip subprocess error:
                    Running command git clone -q 'ssh://****@bitbucket.org/my_org/my_package_repo.git' /tmp/pip-req-build-3t5mkmnw
                    Host key verification failed.
                    fatal: Could not read from remote repository.
                  
                    Please make sure you have the correct access rights
                    and the repository exists.
                  WARNING: Discarding git+ssh://****@bitbucket.org/my_org/my_package_repo.git. Command errored out with exit status 128: git clone -q 'ssh://****@bitbucket.org/my_org/my_package_repo.git' /tmp/pip-req-build-3t5mkmnw Check the logs for full command output.
                  ERROR: Command errored out with exit status 128: git clone -q 'ssh://****@bitbucket.org/my_org/my_package_repo.git' /tmp/pip-req-build-3t5mkmnw Check the logs for full command output.
                  
                  Ran pip subprocess with arguments:
                  ['/opt/conda/envs/work_content/bin/python', '-m', 'pip', 'install', '-U', '-r', '/tmp/condaenv.9p_rq9_h.requirements.txt']
                  Pip subprocess output:
                  Collecting git+ssh://****@bitbucket.org/my_org/my_package_repo.git (from -r /tmp/condaenv.9p_rq9_h.requirements.txt (line 3))
                    Cloning ssh://****@bitbucket.org/my_org/my_package_repo.git to ./pip-req-build-3t5mkmnw
                  
                  failed
                  
                  CondaEnvException: Pip failed
                  

                  当我在我的终端中并按照referenced StackOverflow question中的答案操作时,此远程/自定义软件包安装成功。但是,当我在运行docker build命令之前尝试执行相同的操作时,收到上面的错误。我猜想这是因为Docker正在构建一个全新的操作系统映像,并且它不再具有我在终端中提供的SSH RSA密码短语。如何在生成期间不提供密码短语的情况下通过此错误?

                  更新

                  根据其中一个当前答案中的建议,我已将我的Dockerfile修改为如下所示:

                  # syntax=docker/dockerfile:experimental
                  FROM continuumio/miniconda3:4.10.3
                  ...
                  RUN apt-get install -y openssh-client git
                  RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
                  RUN --mount=type=ssh git clone git@bitbucket.org:my_org/my_package_repo.git /tmp/my_package_repo
                  
                  --mount命令在/tmp目录中创建存储库的本地副本。因此,现在需要将Conda Environmental ment.yml文件从本地目录更改为pip install,如下所示:

                  name: my_app
                  channels:
                    - defaults
                  dependencies:
                    - pip=21.2.2
                    - python=3.8.11
                    - pip:
                      - /tmp/my_package_repo
                      - pandas==1.2.5
                      - python-dotenv==0.19.0
                      - xlrd==2.0.1
                  prefix: /usr/local/anaconda3/envs/my_app
                  

                  ..。我正在使用如下命令运行docker build进程:

                  eval $(ssh-agent); ssh-add ~/.ssh/id_rsa
                  DOCKER_BUILDKIT=1 docker build --ssh default .
                  
                  上面的eval命令用于在Docker构建开始之前手动输入我的SSH密码。docker build命令前面的DOCKER_BUILDKIT=1强制Docker使用Docker Buildkit构建,这是Dockerfile中的RUN --mount=type=ssh git clone命令所必需的。这个解决方案现在对我有效。这并不完全是下面答案中的内容,所以我想我应该与社区分享一下。我会将指向此方向的答案标记为正确答案。

                  ssh

                  推荐答案需要访问您的私钥以进行身份验证。您的私钥不会与运行在Docker镜像中的任何命令共享。 Docker内置了解决此问题的功能,文档here。

                  基本上您要做的是将PUBLIC密钥下载到Docker镜像:

                  # Download public key for github.com
                  RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
                  

                  定义类型为ssh的装载,以便Docker Engine转发SSH代理连接。

                  RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
                  

                  此运行命令可以是其他命令,例如安装PyThin包的命令。

                  您可以使用-ssh选项:

                  构建停靠机映像
                  docker build --ssh default .
                  

                  这篇关于在Docker构建过程中,PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码 下一篇:为什么启动一个Numba Cuda内核可以处理多达640个线程,但在有足够的GPU内存可用时却会在641个线程上失败?

                  相关文章

                  • <bdo id='5CetO'></bdo><ul id='5CetO'></ul>

                • <small id='5CetO'></small><noframes id='5CetO'>

                    <i id='5CetO'><tr id='5CetO'><dt id='5CetO'><q id='5CetO'><span id='5CetO'><b id='5CetO'><form id='5CetO'><ins id='5CetO'></ins><ul id='5CetO'></ul><sub id='5CetO'></sub></form><legend id='5CetO'></legend><bdo id='5CetO'><pre id='5CetO'><center id='5CetO'></center></pre></bdo></b><th id='5CetO'></th></span></q></dt></tr></i><div id='5CetO'><tfoot id='5CetO'></tfoot><dl id='5CetO'><fieldset id='5CetO'></fieldset></dl></div>
                    <legend id='5CetO'><style id='5CetO'><dir id='5CetO'><q id='5CetO'></q></dir></style></legend>

                      <tfoot id='5CetO'></tfoot>