有没有人知道如何在Docker中进行npm安装,必须访问GitHub repos的多个依赖项?我有以下情况,我必须从私人仓库(我有权限)安装npm,但顶级项目从同一个组织的其他回购中吮吸。如:
npm i bob / top-foo
top-foo的package.json有
"dependencies": {
"middle-foo": "bob/middle-foo",
mid-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
答案 0 :(得分:1)
我在Linux环境中运行此操作时没有问题,因为我已将ssh加载到我的GitHub帐户中。
然后,您需要将ssh密钥加密嵌入到docker镜像中 不是您自己的ssh私钥,而是为此创建的新 deploy keys ,并且其公钥已注册到相关的回购(而不是注册到您的帐户)。
请参阅“Automating pushing parts of a git repo to google cloud bucket”:我们的想法是创建一个脚本,用于解密这些私有加密的部署ssh密钥,并在运行时将它们放入~/root/.ssh
容器中,从而允许docker访问这些私有仓库。