Docker Buildkit SSH/Github 困境
Docker Buildkit SSH/Github woes
我正在尝试编写一个 Docker 文件,从 github 中提取私有存储库。问题是我无法让 Docker buildkit 正确使用我的 SSH 密钥。即使使用 their website 中的精确说明和示例代码也不起作用。这是我所做的:
- 使用
ssh-keygen -t ed25519 -C my_email@my_company.com
创建了无密码的 SSH 密钥
- 复制了 public 密钥并将其作为 Github 部署密钥添加到我的存储库
ssh-add
输入了密钥
- 运行 Docker文件
# syntax=docker/dockerfile:1
FROM alpine
# Install ssh client and git
RUN apk add --no-cache openssh-client git
# Download public key for github.com
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
# Clone private repository
RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
适当地替换 myproject
和 myorg
。将 git clone
命令从 Docker 文件复制粘贴到终端即可。 运行 DOCKER_BUILDKIT=1 docker build --ssh default
和 DOCKER_BUILDKIT=1 docker build --ssh default=/path/to/key
都因错误
而失败
> [4/4] RUN --mount=type=ssh git clone git@github.com/myorg/myrepository.git myrepository
#9 0.262 fatal: repository 'git@github.com/myorg/myrepository.git' does not exist
这里可能发生了什么?我在 MacOS 10.14.6 上使用 Docker 20.10.12 build e91ed57。
这是一种解决方法,而不是问题的解决方案。使用 secrets 代替 --ssh
选项。
# syntax=docker/dockerfile:experimental
FROM alpine
RUN apk add openssh-client git
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
ENV GIT_SSH_COMMAND="ssh -i /run/secrets/deploy_key"
RUN --mount=type=secret,id=deploy_key git clone git@github.com:myorg/myrepository.git myrepository
使用命令构建
DOCKER_BUILDKIT=1 docker build --no-cache --secret id=deploy_key,src=/Users/Holmes5/.ssh/deploy_key .
我正在尝试编写一个 Docker 文件,从 github 中提取私有存储库。问题是我无法让 Docker buildkit 正确使用我的 SSH 密钥。即使使用 their website 中的精确说明和示例代码也不起作用。这是我所做的:
- 使用
ssh-keygen -t ed25519 -C my_email@my_company.com
创建了无密码的 SSH 密钥
- 复制了 public 密钥并将其作为 Github 部署密钥添加到我的存储库
ssh-add
输入了密钥- 运行 Docker文件
# syntax=docker/dockerfile:1
FROM alpine
# Install ssh client and git
RUN apk add --no-cache openssh-client git
# Download public key for github.com
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
# Clone private repository
RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
适当地替换 myproject
和 myorg
。将 git clone
命令从 Docker 文件复制粘贴到终端即可。 运行 DOCKER_BUILDKIT=1 docker build --ssh default
和 DOCKER_BUILDKIT=1 docker build --ssh default=/path/to/key
都因错误
> [4/4] RUN --mount=type=ssh git clone git@github.com/myorg/myrepository.git myrepository
#9 0.262 fatal: repository 'git@github.com/myorg/myrepository.git' does not exist
这里可能发生了什么?我在 MacOS 10.14.6 上使用 Docker 20.10.12 build e91ed57。
这是一种解决方法,而不是问题的解决方案。使用 secrets 代替 --ssh
选项。
# syntax=docker/dockerfile:experimental
FROM alpine
RUN apk add openssh-client git
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
ENV GIT_SSH_COMMAND="ssh -i /run/secrets/deploy_key"
RUN --mount=type=secret,id=deploy_key git clone git@github.com:myorg/myrepository.git myrepository
使用命令构建
DOCKER_BUILDKIT=1 docker build --no-cache --secret id=deploy_key,src=/Users/Holmes5/.ssh/deploy_key .