docker - 如何使用多层私有 repo 依赖项在 Docker 内部构建 npm
问题描述
有谁知道如何在必须访问 GitHub 存储库的多个依赖项的 Docker 中进行 npm 安装?我遇到了以下情况,我必须从私人仓库安装 npm(我有权限),但顶级项目吸纳了来自同一组织的其他仓库。如:
npm i bob/top-foo
top-foo 的 package.json 有
"dependencies": {
"middle-foo": "bob/middle-foo",
middle-foo 的 package.json 有
"dependencies": {
"bottom-foo": "bob/bottom-foo",
我在我的 Linux 环境中运行它没有问题,因为我已将我的 ssh 加载到我的 GitHub 帐户中。当然,问题是 Docker 映像以 root 身份启动,我似乎无法弄清楚推送凭据如何向下流入依赖项安装。
我的 Docker 文件目前还挺简单的,因为我什至无法获得身份验证的密钥。我用 ssh-keygen 创建了一个全新的并尝试使用它:
FROM node:6
ARG git_personal_access_token
RUN echo $git_personal_access_token
ARG SSH_PRIVATE_KEY
RUN echo $SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/
RUN chmod 700 /root/.ssh
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com > /root/.ssh/known_hosts
RUN echo $SSH_PRIVATE_KEY > /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
RUN eval $(ssh-agent);ssh-add;ssh -vvv -T -i /root/.ssh/id_rsa git@github.com
解决方案
我在我的 Linux 环境中运行它没有问题,因为我已将我的 ssh 加载到我的 GitHub 帐户中。
然后您需要将加密的 ssh 密钥嵌入到您的 docker 映像中。
不是您自己的 ssh 私钥,而是专门为此创建的新部署密钥,并且其公钥已注册到相关存储库(而不是注册到您的帐户)。
请参阅“自动将 git repo 的部分推送到 google cloud bucket ”:想法是有一个脚本来解密这些私有加密部署 ssh 密钥并在运行时将它们放入~/root/.ssh
容器中,从而允许 docker 访问这些私有 repo。
推荐阅读
- selenium - Selenium 不执行某些操作
- reactjs - 在这种情况下检测 Firebase 登录何时完成或取消
- indy - 程序入口点无法位于动态链接库 MetropolisULiveTile200.bpl
- python - 如何使用 Selenium Python 进行同时下载
- kotlin - 更改 Cordapp 的日志格式布局
- django - 如何解决“ValidationError”对象没有属性“strip”问题?
- bazel - Windows 10 上的 pkg_rules 问题
- python - 熊猫 ffil 和 bfill 以 groupby 为条件
- coldfusion - 用更好的技术编写 cfc
- python - 当我使用随机搜索 cv 时形状奇怪