如何使用docker中挂载的ssh进行Dockerfile中的后续命令

Moh*_*amy 12 git ssh docker dockerfile docker-buildkit

我必须在使用 CMD 运行容器时执行 git Push。但是 ssh 在最后一行(即 CMD 部分)中不可用,无法进行 git 推送。我可以在这里做什么来获取 git Push 的 ssh 密钥?请有人帮助我。

请找到我的Dockerfile

# syntax = docker/dockerfile:1.0-experimental
FROM continuumio/anaconda3

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

# Download public key for github.com
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

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

CMD python myproject/src/example.py && git push
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令在运行期间传递我的 ssh 密钥

docker build --ssh default .
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 11

如“ BuildKit / 使用 SSH 访问构建中的私有数据”和“在 Docker 18.09 中构建机密和 SSH 转发”中所示,我看到它与以下内容一起使用:

  • --mount=type=ssh
  • RUN在线上,不在线CMD

这样就可以在RUN, 期间使用docker build
这可能无法在运行时 ( docker run) 与CMD


Raz*_*ore 9

仅供参考,此工作有3 个先决条件,因此请确保构建使用 buildx,在其中Dockerfile使用RUN命令--mount=type=ssh并将--ssh default参数传递给构建命令:

export DOCKER_BUILDKIT=1
Run Code Online (Sandbox Code Playgroud)

FROM ...
RUN --mount=type=ssh 作曲家安装 --no-dev --no-interaction

docker build --ssh default .
Run Code Online (Sandbox Code Playgroud)