gpt4 book ai didi

python - 尝试在 DockerFile 中 pip 安装私有(private)存储库

转载 作者:行者123 更新时间:2023-12-01 07:31:35 26 4
gpt4 key购买 nike

我正在尝试安装自定义 Python 包以在 Flask 服务器中运行。服务器将位于 Docker 镜像中。因此,我试图对 RUN pip install git+ssh://git@bitbucket.org:teamName/reponame.git@dev#egg=packageName 进行操作但是,我尝试过的方法都不起作用。

我尝试了找到的两种格式:

1) git+ssh://git@bitbucket.org:teamName/reponame.git@dev#egg=packageName

2) git+ssh://bitbucket.org/team/reponame.git@dev#egg=packageName

这两种技术都会给出类似的错误:

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ssh: Could not resolve hostname bitbucket.org:TeamName: Name does not resolve
fatal: Could not read from remote repository.

root@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.

即使我的公钥设置在 BitBucket 中

这是 Dockerfile:

 Use an official Python runtime as a parent image
FROM python:3.6-alpine

#Preparation to pull from Github
ARG SSH_PRIVATE_KEY

RUN echo "Oh dang look at that ${SSH_PRIVATE_KEY}"

RUN apk update
RUN apk add --no-cache openssh \
git

RUN mkdir /root/.ssh/
RUN echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_rsa

RUN chmod 600 /root/.ssh/id_rsa


RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

#install dependencies
RUN apk add --no-cache gcc \
bash \
tzdata \
g++ \
tiff-dev \
openssl \
poppler \
poppler-dev \
poppler-utils \
&& pip install --trusted-host pypi.python.org <THE_URL>
&& cp /usr/share/zoneinfo/America/that_place /etc/localtime \
&& echo "America/that_place" > /etc/timezone \
&& date

# Set the working directory to /app
WORKDIR ./my_dir

# Make port 5000 available to the world outside this container
EXPOSE 5000

#Remove SSH
RUN rm /root/.ssh/id_rsa

# Define environment variable
ENV NAME __main__
ENV FLASK_APP app/app.py
ENV FLASK_RUN_HOST 0.0.0.0
ENV GOOGLE_APPLICATION_CREDENTIALS ./resources/google/credentials.json
ENV GOOGLE_CLOUD_BUCKET_NAME bucket_name

# Run app.py when the container launches
CMD ["flask", "run"]

SSH key 作为参数传递给构建 $(cat ./ssh/id_rsa)

最佳答案

您不想以这种方式传递 SSH key :它最终会出现在生成的镜像中,因此有权访问该镜像的任何人都可以访问您的 SSH key 。

选项:

  1. 使用 BuildKit,它具有内置 SSH 代理转发 ( https://docs.docker.com/develop/develop-images/build_enhancements/#using-ssh-to-access-private-data-in-builds )。
  2. 我在这里描述的技术太复杂,无法在简短的答案范围内涵盖:https://pythonspeed.com/articles/docker-build-secrets/
  3. 如果您不担心泄露您的 SSH 私钥,请修复此设置。我的猜测是您还需要 chmod 700/root/.ssh

关于python - 尝试在 DockerFile 中 pip 安装私有(private)存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com