【发布时间】:2018-04-30 22:21:06
【问题描述】:
有谁知道如何在必须访问 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
【问题讨论】:
-
您是否可以分享一些 Dockerfile 详细信息?
-
@kakabali 我无法获得格式正确的评论,所以我编辑了原始帖子。
-
ARG 似乎并不明智:图像的 docker 历史记录会泄露您的密钥...
-
我一直在尝试各种方法,只是为了让它做任何事情。运气不太好。我完全赞成更好的选择。
-
@kakabali 我能够创建一个部署密钥并将其用于顶级存储库,但我无法将它用于组织中的依赖存储库。机器用户是更好的选择吗?最终,这一切都必须进入构建嵌入式图像的 docker 中。