- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 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 文章中有一条评论是这样说的:
希望这对某人有帮助。
关于git - 在具有私有(private) repo 依赖项的 docker 容器中使用 bower,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667931/
我刚刚升级到Bower 1.0,做了一个bower install,发现了一堆新的.bower.json文件(注意前导时期)。 我在changelog或文档中没有找到对.bower.json的引用。我
Bower 的网站描述了 Bower.json 中的 ignore 键: ignore [array]: An array of paths not needed in production that
我已经在我的项目根目录中添加了一个 bower 包。我正在使用 bower,因此可以更轻松地管理每个组件的更新(bower 的功能之一)。但是我在安装后收到了这条消息: no-json No bowe
当我通过以下方式从 git repo 安装库时: bower install git@github.com:fabiantheblind/p5.js.git --save 该组件被克隆到我的 bowe
我已经为 Bower 设置了一个 Nexus 代理注册表。我正在使用 Debian 9。bower 版本是 1.8.8,安装了 bower-nexus3-resolver(版本 1.0.4)。我的 .
是否可能只有一个可以从 Bower“安装”的存储库? 目前我已经注册了一个连接到开发库的 bower 包,但是在运行时 bower install我只想要 dist要下载的文件。 我见过有人保留两个存
我正在尝试安装 https://github.com/aterrien/jQuery-Knob通过 bower 。在包的 bower.json 文件中,我看到: { "name": "aterrien
我正在尝试通过 bower 安装本地 Jquery ui。 我有一个名为 jquery-ui 的本地文件夹并运行了以下命令 bower install jquery-ui/jquery-ui.min.
我正在研究如何使用 bower 安装软件包。 当我 'bower install packagename' 时,软件包安装在/app/components/中。 但是,我想自己决定项目的结构。 有没有
$ bower install angular-animate --save bower cached git://github.com/angular/bower-angular-animate.g
我正在使用 bower 从下面的 bower.json 中查看依赖项,所以问题是我希望 bower 提供更新版本发布的依赖项报告但不安装它,对于使用 npm-check-updates for npm
一些库在其 Github 存储库中没有已经构建的 JavaScript 文件,因为这些库的作者反对保留构建工件(例如 Sinon.JS)。是否有使用 Bower 处理此问题的首选方法? 我知道我可以
我想运行我自己的 bower 服务器来开始跨团队共享几个内部模块。我很难找到运行您自己的服务器的信息。在 bower.io 网站上有这条线 N.B. To run your own Bower End
在 *nix 上,bower 使用 ~/.bower其缓存的文件夹(包等)。 我想将其更改为其他位置。 bower spec来自的文档建议我配置 storage输入我的.bowerrc . 我在我的项
我有一个项目依赖于另一个使用 Bower 的项目。我要 bower install当我在父项目上运行它时也运行在该组件上。到目前为止,我还没有在 configuration spec 中找到任何东西,
如何在不提供 bower.json 中的用户凭据的情况下将访问受限存储库作为依赖项添加到 bower.json? 即我想避免像这样指定它: { "dependencies": { "ang
Bower 文档说 N.B. If you aren't authoring a package that is intended to be consumed by others (e.g., yo
我正在下载 Angular、Angular-Bootstrap 和 Bootstrap with Bower。 Bootstrap 依赖于进程中安装的 jquery。但我的项目中不需要它,因为我只使用
我正在尝试为使用 Bower 的应用程序设置自动包构建。 postinstall中进入bower install时,bower提示: [?] May bower anonymously report
我想将特定分支的最新版本指定为依赖项。具体来说,我想在 Bootstrap v3.0 发布之前使用它。 将其指定为 Bower 中的依赖项的最佳方法是什么? 最佳答案 您需要使用#、appended
我是一名优秀的程序员,十分优秀!