在docker中运行package.json并引用私有存储库vsts git存储库由于身份验证失败而失败

时间:2018-06-13 06:42:06

标签: node.js git docker azure-devops

我的主项目有package.json,它与另一个私有VSTS Git存储库

有依赖关系
.scss

在我的桌面上,我安装了SSH密钥,因此当我运行"dependencies": { "sk-api": "git+ssh://My-tfs@vs-ssh.visualstudio.com:22/tk-api/_ssh/tk-api#v1.1.7", "sk-modes": "git+ssh://My-tfs@vs-ssh.visualstudio.com:22/tk-modes/_ssh/tk-modes#tk" }, 时,它可以运行。但是当我通过我的docker文件运行npm install时,由于身份验证而失败。

  

npm ERR!主机密钥验证失败。错误的ERR!致命:无法阅读   来自远程存储库。

docker build

最好的方法是什么。还应该在运行npm install之前复制docker文件中的ssh密钥吗?

1 个答案:

答案 0 :(得分:1)

要解决此问题,请查看以下方面:

  1. 确保已将SSH密钥添加到VSTS帐户
  2. 确保还在docker镜像中提供了SSH密钥。

    您可以将SSH密钥提交到文件中的git仓库,然后将文件(SSH密钥)复制到docker镜像。您可以参考要点npm install from private repo, in docker build了解详细步骤。

  3. 只有读取权限才能限制SSH密钥。但您可以使用个人访问令牌(PAT)来实现(使用HTTP协议而不是SSH协议)。详情如下:

    1. 仅在选择了代码(读取)范围的情况下创建PAT

      enter image description here

    2. 在git repo URL中使用PAT

      使用以下网址格式:

      git+https://Personal%20Access%20Token:PAT@account.visualstudio.com/project/_git/repo

      例如,您可以将package.json文件中的依赖项更改为:

      "dependencies": {
          "sk-api": "git+https://Personal%20Access%20Token:adsvso24n1nd6o7vydn3hsfvb5nicrqrbjm5umwrxnktglemajta@My-tfs.visualstudio.com/tk-api/_git/tk-api ",
          "sk-modes": "git+https://Personal%20Access%20Token:adsvso24n1nd6o7vydn3hsfvb5nicrqrbjm5umwrxnktglemajta@My-tfs.visualstudio.com/tk-modes/_git/tk-modes "
        },