gpt4 book ai didi

远程 Docker 容器内的 Github 访问(使用 2FA)

转载 作者:行者123 更新时间:2023-12-05 06:03:47 26 4
gpt4 key购买 nike

无法找到另一个类似这样的问题,但让我知道是否有一个涵盖所有相同元素的问题(远程访问主机、在那里设置 Docker 容器、Github 2FA 以访问私有(private)存储库)。

我最近加入了一家公司,我在这家公司从家里的笔记本电脑远程 ssh 连接到主机。在这些机器上,我的同事每人都设置了一个 Docker 容器,我也做了同样的事情(我的第一次)。

话虽如此,我使用以下工作流来 (a) 推送到我公司的私有(private) Github 存储库(比如 https://github.com/my_company_name/my_company_repo ),(b) 从我公司的私有(private) Github 存储库(比如 https://github.com/my_company_name/colleague_repo )克隆和安装。

对于 (a) 我首先导航到 Docker 容器内的终端,然后导航到 repo 目录,从我的 repo git fetch 然后(在添加/提交等之后)git push 到它,此时我必须填写我的用户名和密码。密码在这里不起作用;我必须填写我的个人访问 token (我创建的具有读写权限)。

对于 (b) 我首先从同事的 repo 中获取 git clone,然后必须输入我的用户名和密码。 (同样,需要个人访问 token 而不是密码。)然后我 pip install -e 按名称安装 repo。

我想通过在我的 Dockerfile 中使用某种适当的配置来避免不断提供我的凭据。 (所以对于(a)我只想 pop 我的终端和 git push <origin> <master> 就是这样。)我还想在 Dockerfile 本身中克隆和安装我同事的存储库(即在 Docker 构建中完成所有克隆和安装业务),因为每次都会安装一组非常具体的公司存储库——但正如您想象的那样,身份验证不起作用。

我试着添加行

RUN git config --global user.name <my_username>
RUN git config --global user.password <personal_access_token>
RUN pip install -e git+https://github.com/my_company_name/colleague_repo

到我的 Dockerfile(并且还在第二行尝试了我的实际密码)。没有用 - 收到相同的消息,表明身份验证失败。

有人能帮忙吗?

最佳答案

您可以使用 SSH key ,带有 multi-stage approachAccess Private Repositories from Your Dockerfile Without Leaving Behind Your SSH Keys 的“Vladislav Supalov ”中所示

# this is our first build stage, it will not persist in the final image
FROM ubuntu as intermediate

# install git
RUN apt-get update
RUN apt-get install -y git

# add credentials on build
ARG SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/
RUN echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_rsa

# make sure your domain is accepted
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

RUN git clone git@bitbucket.org:your-user/your-repo.git

FROM ubuntu
# copy the repository form the previous image
COPY --from=intermediate /your-repo /srv/your-repo
# ... actually use the repo :)

更现代的方法是 using BuildKit

使用新的 SSH 挂载类型,您可以让 Docker 构建使用主机的 SSH key 。

Here’s how it looks like:

RUN --mount=type=ssh ...

You add the new mount type to your RUN command, and the whole process is taken care of for you.

参见 BuildKit / Dockerfile frontend syntaxes/ RUN --mount=type=ssh

关于远程 Docker 容器内的 Github 访问(使用 2FA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66589291/

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