在 docker 中18.09+
我们可以使用以下方法在构建镜像时使用转发的 ssh 密钥:
# syntax=docker/dockerfile:experimental
# example file
FROM node:10.15.3-alpine
RUN apk update && apk add openssh-client git
# use the forwarded ssh key
RUN --mount=type=ssh git clone <repo>
然后我们将像这样构建图像:
DOCKER_BUILDKIT=1 docker build --ssh default .
我想使用docker-compose
它来实现这一点,但它似乎不起作用。docker --ssh
-compose 命令没有标志,我看不到文件中可以设置的任何内容docker-compose.yml
来实现这一点。
答案1
截至撰写本文时,得票最多的答案是错误的。这很好用:
$ docker compose build --ssh default
$ docker compose version
Docker Compose version v2.5.1
这相信这需要你的公钥对 SSH 代理可见:
ssh-add -L
如果没有,请运行ssh-add -K
或在 macOS 上运行ssh-add --apple-use-keychain
。
答案2
不幸的是,根据对这个问题的评论,我认为这目前不受支持:https://github.com/docker/compose/issues/6358 ——事实上,谷歌搜索“docker-compose BuildKit”会给出一些指向各种票据的链接,这些链接似乎都指出 docker-compose 目前不支持使用 BuildKit。
我要尝试的解决方法(以及在这些票据评论中提到的)是在运行 docker-compose 之前,使用调用“docker build”的 shell 脚本单独构建图像。