我在我的NestJS应用程序中使用私人github回购有问题。当我使用docker build命令创建对接者映像时,该映像将被成功创建,并且一切都正常。但是,我不能在docker-compose中使用Dockerfile。
下面是Dockerfile中使用BuildKit挂载特性的部分:
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
RUN --mount=type=ssh npm install仅用Dockerfile构建映像时,我传递--ssh default参数,就像这样,它成功地安装了私有回购:
docker build --ssh default -t CONTAINER_NAME .在这篇文章之后,我在docker-compose.yml文件中包含了如下所示的$SSH_AUTH_SOCK:
environment:
- NODE_ENV:${NODE_ENV}
- SSH_AUTH_SOCK:${SSH_AUTH_SOCK}
volumes:
- $SSH_AUTH_SOCK:${SSH_AUTH_SOCK}但是,每当我尝试运行docker-compose up时,我都会得到这个错误。
#11 44.97 npm ERR! code 128
#11 44.97 npm ERR! An unknown git error occurred
#11 44.97 npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/organization/repo.git
#11 44.97 npm ERR! git@github.com: Permission denied (publickey).
#11 44.97 npm ERR! fatal: Could not read from remote repository.
#11 44.97 npm ERR!
#11 44.97 npm ERR! Please make sure you have the correct access rights
#11 44.97 npm ERR! and the repository exists.知道我做错了什么吗?
发布于 2022-08-14 20:29:14
他们将ssh标志作为选项添加到撰写:https://github.com/compose-spec/compose-spec/pull/234中的构建键中。
services:
sample:
build:
context: .
ssh:
- default发布于 2022-05-25 22:59:31
您的environment语法不正确。environment块可以是NAME=VALUE对的列表:
environment:
- SSH_AUTH_SOCK=${SSH_AUTH_SOCK}也可以是一本字典:
environment:
SSH_AUTH_SOCK: ${SSH_AUTH_SOCK}您的容器不是这些东西,所以您的容器没有SSH_AUTH_SOCK环境变量。
如果我使用这个docker-compose.yaml文件:
version: "3"
services:
ssh:
image: fedora:35
environment:
- SSH_AUTH_SOCK=${SSH_AUTH_SOCK}
volumes:
- ${SSH_AUTH_SOCK}:${SSH_AUTH_SOCK}
command:
- sh
- -c
- |
yum -y install openssh-clients
sleep inf我可以将exec放入容器中(在等待包安装完成之后),并验证它是否能够与我的代理对话:
$ docker-compose exec ssh ssh-add -l
2048 SHA256:... (RSA)
4096 SHA256:... (RSA)另外,关于volumes:块的一个无关的评论是:您在引用变量的方式上是不一致的。这不是一个问题,但它伤害了我的大脑(这样的矛盾有时会在其他情况下导致奇怪的问题)。在引用环境变量时,最好始终使用${varname}语法:
volumes:
- ${SSH_AUTH_SOCK}:${SSH_AUTH_SOCK}https://stackoverflow.com/questions/72384329
复制相似问题