gpt4 book ai didi

git - 在具有私有(private) repo 依赖项的 docker 容器中使用 bower

转载 作者:太空狗 更新时间:2023-10-29 13:46:41 24 4
gpt4 key购买 nike

我正在尝试在 docker 容器内运行 bower install,在 docker-compose.yml 中作为命令传递

docker-compose.yml中的相关代码:

services:
assets:
build: ./src
command: >
sh -c '
bower install --allow-root;
'

bower.json 具有以下依赖关系:

{
"name": "projectname",
"version": "version",
"dependencies": {
"remote-repo": "ssh://git@remoterepo.url/repo.git#branch"
}
}

这个远程仓库是私有(private)的。主机具有正确的 SSH 凭据以从远程提取。

我已经尝试通过 4 或 5 种不同的方式将 SSH 凭据从我的主机传递到 docker 容器,但每次尝试都会给我带来相同的错误消息:

docker_1   | bower repo#branch          ECMDERR Failed to execute "git 
ls-remote --tags --heads ssh://git@remoterepo.url/repo.git", exit code
of #128 Host key verification failed. fatal: Could not read from
remote repository. Please make sure you have the correct access
rights and the repository exists.

当我 exec 直接进入容器并尝试 git clone 时,它​​会询问我是否确定要将远程服务器添加到 known_hosts,然后它会询问我的密码ssh key (正如第一次尝试连接到远程时所预期的那样)。

我已按照此 stackoverflow 响应中的步骤尝试绕过提示:https://stackoverflow.com/a/23411161/4736263

甚至我可以通过 ssh 将所有东西都扔给它,在 RUN 命令下将这些步骤添加到我的 Dockerfile 中:https://serverfault.com/questions/132970/can-i-automatically-add-a-new-host-to-known-hosts/316100#316100

就目前而言,我的安装脚本(运行 docker-compose up 等)包括这一行:

cp $HOME/.ssh/id_rsa src/id_rsa

而且我已经确认 id_rsa 被正确复制到 Dockerfile 所在的目录中(具体来说,src 在我的应用程序中)

我的 Dockerfile 包含这个:

# Make ssh dir
RUN mkdir /root/.ssh/

# Copy over private key, and set permissions
ADD id_rsa /root/.ssh/id_rsa

# Create known_hosts
RUN touch /root/.ssh/known_hosts

# Add remote's key
RUN ssh-keygen -R remoterepo.url
RUN ssh-keygen -R remoterepoIP
RUN ssh-keygen -R remoterepo.url,remoterepoIP
RUN ssh-keyscan -H remoterepo.url,remoterepoIP >> /root/.ssh/known_hosts
RUN ssh-keyscan -H remoterepoIP >> /root/.ssh/known_hosts
RUN ssh-keyscan -H remoterepo.url >> /root/.ssh/known_hosts

有没有办法让 bower 进入 docker 容器以访问私有(private)远程仓库?我觉得我已经尝试了一切(而且我整个星期都在尝试不同的事情)。

最佳答案

此配置似乎唯一有效的方法是:

1) 在私有(private)仓库中为docker容器创建一个只读key
2) 将只读的creds和known_hosts放入Dockerfile目录下的repo
3) 调整id_rsa文件的权限

我尝试调整从主机复制的凭据的权限,但仍然出现权限被拒绝的错误。解决这个问题的唯一方法是在我们的私有(private)仓库中为这个容器创建一个特殊的只读 key 。

这并没有真正解决最初的问题,但它让我们到达了我们需要去的地方。我们的实现是 .gitignore 凭据并将它们以另一种方式传递给用户,这可以防止 secret 存储在 repo 中。

我从安装脚本中删除了复制命令,所以 Dockerfile 中的最终结果如下:

# Make ssh dir
RUN mkdir /root/.ssh/

# Copy over private key, and set permissions
COPY id_rsa /root/.ssh/id_rsa
COPY known_hosts /root/.ssh/known_hosts
RUN chmod 600 /root/.ssh/id_rsa

私钥与 Dockerfile 位于同一目录中。

我怀疑问题仍然在于需要输入密码 - 在 2014 年之前的 StackOverflow 文章中有一条评论是这样说的:can't use a passphrase protected one apparently

希望这对某人有帮助。

关于git - 在具有私有(private) repo 依赖项的 docker 容器中使用 bower,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com