使用 docker-compose(SSH 私钥)将参数从文件传递给 Dockerfile

tos*_*o92 3 docker dockerfile docker-compose

你好!

我有点卡在 docker-compose 中,因为我需要将我的私有 SSH 密钥传递给我Dockerfile在我的声明中声明的docker-compose.yml,如下所示:

docker-compose.yml

version: '3.7'
services:
  worker:
    build: .
    args:
      - SSH_PRIVATE_KEY
Run Code Online (Sandbox Code Playgroud)

文件

ARG SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/  && \
    echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_rsa && \
    chmod 600 /root/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

使用 docker 本身,这很容易,因为我只需要运行以下命令:

docker build . --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)"
Run Code Online (Sandbox Code Playgroud)

但是在docker-compose中... docker-compose中的ARGS配置问题在另一个问题中描述的就是不能让私钥在docker-compose.yml文件里面。

我需要让 docker-compose 访问里面的密钥~/.ssh/id_rsa:有关如何执行该操作的任何线索?

谢谢!

nor*_*bjd 5

args 上文档指出:

您可以在指定构建参数时省略该值,在这种情况下,它在构建时的值是 Compose 运行环境中的值。

在您的情况下,您可能希望worker使用以下命令构建服务:

SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" docker-compose build
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你docker-compose.yml错了(失踪context),应该是:

version: '3.7'
services:
  worker:
    build:
      context: .
      args:
        - SSH_PRIVATE_KEY
Run Code Online (Sandbox Code Playgroud)