使用主机SSH密钥在DockerFile中访问私有Git存储库

时间:2018-11-20 21:45:56

标签: git docker npm dockerfile ssh-keys

我是Docker的新手,可以尝试在容器中构建和运行Angular Web应用。

我在项目的根目录有一个非常基本的Dockerfile,如下所示:

# Create the image based on the official Node 10.13.0 image from Dockerhub
FROM node:10.13.0 as node

# Copy dependency definitions
COPY package.json .

# Install dependencies using npm
RUN npm install

# TODO - copy rest of app and run angular-cli build commands to serve up the app

对它运行构建命令后,我遇到了以下错误:

enter image description here

通过查找此错误,我意识到我尚未从主机提供任何主机密钥详细信息,因此可以将其用于访问私有存储库。

在这里,我遇到了一些关于提供主机密钥详细信息(例如this one)的方法的旧答案,但是我没有得到更多的信息,仍然遇到相同的错误。

通过在dockerfile中回显这些密钥并在终端中查看详细信息,我能够确认自己正确地引用了主机密钥。

无论如何,我不确定这样做的正确或官方方式。

我正在docker 2.0.0.0-maxc78和macOS High sierra上运行

有人可以请我指出正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这种情况将从最近的docker build secret中受益。

docker build --secret id=mysite.key,src=path/to/mysite.key .

在您的Dockerfile中用作:

# syntax=docker/dockerfile:1.0.0-experimental

FROM alpine

RUN --mount=type=secret,id=mysite.key command-to-run

通过“ This”了解更多信息(您的docker 2.0.0应该支持它)

对于您而言,您的Dockerfile应该包括:

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

在docker客户端上,您需要使用--ssh标志来定义允许对此构建进行SSH转发。

docker build --ssh default .
     

该标志接受一个键值对,该对值定义了本地SSH代理套接字或私钥的位置。