尝试从 docker 容器内安装使用(私有)git 存储库的软件包失败

2024-01-09

在我们的设置中,我们有一个自动构建系统。构建实际上是在 docker 内完成的(因此主机服务器不必安装所有库)。安装should使用主机操作系统用户的凭据。

当我不使用 docker 镜像并手动调用时,系统可以工作npm i --only=production。或者当我删除对私有 git 存储库的任何依赖时它就会起作用。但是,当我同时使用两者时,我收到“警告”/错误。我首先遇到的“问题”是该主机不在已知主机列表中(我确实知道这是针对我测试它的本地计算机)。随后出现错误git@HOST: Permission denied (publickey).

docker文件如下:

FROM node:12-alpine
RUN apk update
RUN apk upgrade
RUN apk add rsync
RUN apk add git less openssh

RUN mkdir /javascript
WORKDIR /javascript

ENTRYPOINT npm i --only=production

docker 使用以下参数运行:

sudo docker run -it --volume=/home/paul/PROJECTDIR/javascript:/javascript --volume=/home/paul/.ssh/:/root/.ssh/ IMAGEID

package.json 的豁免(实际上是有问题的行):

"dependencies": {
  "configuration-loader": "git+ssh://git@HOST",
}

我可以轻松做到npm i --only=production从docker外部肯定是docker没有正确读取ssh信息?我已经仔细检查过但是/home/paul/.ssh包含一个正确的id_rsa id_rsa.pub and known_hosts file.

那么这是怎么回事呢?为什么从docker安装没有读取ssh信息?我是否绑定了不正确的内部位置? - 我应该使用什么位置?

我也尝试过将入口点更改为sh然后检查里面有什么~/.ssh(并且该目录存在) - 它显示了完美的按键。


为了调试,我将入口点更改为sh并手动尝试安装(相同的错误)但使用printenv showed:

GIT_SSH_COMMAND=ssh -Tvv
NODE_VERSION=12.18.3
HOSTNAME=3dd43e45c090
YARN_VERSION=1.22.4
SHLVL=2
HOME=/root
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/javascript

此外使用ENV GIT_SSH_COMMAND ssh -Tvv报告的消息如下:

debug1: identity file /home/node/.ssh/id_rsa type -1

当我将音量更改为不链接到内部时/root而是进入/home/node,调试消息更改为:

debug1: identity file /root/.ssh/id_rsa type -1

要检查主目录是如何链接运行的:

ls -alrth /home

显示(当将卷绑定到/root):

drwxr-xr-x    1 root     root        4.0K Jul 28 21:24 .
drwxr-sr-x    1 node     node        4.0K Aug 31 09:07 node
drwxr-xr-x    1 root     root        4.0K Aug 31 09:07 ..

当绑定到/home/node出现相同的条目,只是node是在之后..(尽管报告的时间相同,所以这一定是侥幸)。

它似乎实际上强制执行新的 ssh 密钥或其他什么?如果它已经找到一个它会强制执行本地密钥?


好吧,这得到了 @VonC 的大力帮助,也是迄今为止我最不喜欢的解决方案。但我如何解决这个问题是通过绑定/home and /home/node到外部主目录。

sudo docker run -it \
    --volume=/home/paul/PROJECTDIR/javascript:/javascript \
    --volume=/home/paul/.ssh/:/root/.ssh/ \
    --volume=/home/paul/.ssh/:/home/node/.ssh IMAGEID

丑陋,但工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试从 docker 容器内安装使用(私有)git 存储库的软件包失败 的相关文章

随机推荐