如何在Docker构建期间公开私有git存储库而不将ssh密钥包含在映像中

u7up0aaq  于 2022-11-22  发布在  Docker
关注(0)|答案(1)|浏览(118)

我试图在构建docker的过程中使用ADD命令来公开一个私有的git LFS repo,但是我一直收到错误:

------
> git://192.168.189.143/REPO/my-libs.git:
#37 0.761 Permission denied, please try again.
#37 0.819 Permission denied, please try again.
#37 0.883 git@192.168.189.143: Permission denied (publickey,password).
#37 0.885 fatal: Could not read from remote repository.
#37 0.885 
#37 0.885 Please make sure you have the correct access rights
#37 0.885 and the repository exists.
------
failed to load cache key: failed to fetch remote git@192.168.189.143:REPO/my-libs.git: exit status 128

以下是对该命令的引用:

我的docker文件看起来像这样:

# syntax=docker/dockerfile-upstream:master-labs
FROM ubuntu:18.04
ENV USER=markf78
USER ${USER}
WORKDIR /home/${USER}/temp
ADD git@192.168.189.143:REPO/my-libs.git /home/${USER}/temp

我在MacOS X主机上的构建命令是

docker build -t my-image --ssh default .

我能够使用ed25519 SSH密钥从MacOS X主机上的终端成功克隆。
有什么想法如何解决这个问题?我知道有其他解决方案可用,但这一个似乎是最干净的,因为它不存储我的私钥在图像中。

4szc88ey

4szc88ey1#

不要在映像构建中克隆存储库,您根本不需要这样做。
只需将Dockerfile放在repo的/中(也将其提交到repo以对其进行版本控制),然后在映像中使用Dockerfile命令复制repo文件:COPY . .第一个点是source,也就是你机器上的当前目录,也就是你的git repo,第二个点是target,也就是映像中的工作目录。你构建映像并发布它,把它推到docker注册表中,这样其他人就可以把它拉出来并开始使用它。如果你想在服务器的帮助下构建和发布更复杂的东西,可以查阅CI/CD技术。

相关问题