首页 > 解决方案 > 如何在 docker 中使用挂载的 ssh 来执行 Dockerfile 中的后续命令

问题描述

在使用 CMD 运行我的容器时,我必须执行 git push。但是 ssh 在最后一行(即 CMD 部分)中不可用,无法执行 git push。我可以在这里做什么来获取 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

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

docker build --ssh default .

标签: gitdockersshdockerfiledocker-buildkit

解决方案


如“ BuildKit / Using SSH to access private data in builds ”和“ Build secrets and SSH forwarding in Docker 18.09 ”中所见,我看到它用于:

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

所以这将与 a RUN, during一起使用docker build。这在运行时 ( )
可能不起作用docker runCMD


推荐阅读