【问题标题】:Install private npm package in Docker via SSH通过 SSH 在 Docker 中安装私有 npm 包
【发布时间】:2023-03-14 22:00:01
【问题描述】:

我有一个主存储库,其中包含一个 NPM 包,该包加载另一个私有 NPM 包,两者都位于 Gitlab 中的同一组织中。

我已经研究了几个小时,发现很多方法都不起作用。首先是 Dockerfile,其中包含我认为最常用的添加 SSH 密钥的方法。

FROM node:10.15.1-alpine as image
WORKDIR /usr/src/app
RUN apk add --update --no-cache openssh git

COPY package.json ./
ARG SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/ && \
    echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa && \
    chmod 600 /root/.ssh/id_rsa && \
    touch /root/.ssh/known_hosts && \
    ssh-keyscan gitlab.com > /root/.ssh/known_hosts
RUN npm install

FROM image as build
COPY . .
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.2.1/wait /wait
RUN chmod +x /wait
CMD /wait && npm run start
EXPOSE 4000

我通过docker build --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" -t test --squash . 打电话给它

我的package.json 包含"shared": "git+ssh://git@gitlab.com:ORGA/PROJECT",其中 ORGA/PROJECT 是我的组织和项目的真实名称。

问题是我总是总是收到git@gitlab.com: Permission denied (publickey).

在 Docker 中:

  • /root/.ssh/id_rsa:包含正确的 SSH 密钥,该密钥也在 Gitlab 中注册并在我自己的 Mac 上本地工作。
  • /root/.ssh/known_hosts:包含gitlab.com ssh-rsagitlab.com ecdsa-sha2-nistp256gitlab.com ssh-ed-25519 的条目。

ls -lah /root/.ssh 打印:

-rw-------    1 root     root        3.2K Feb 26 14:05 id_rsa
-rw-r--r--    1 root     root         656 Feb 26 14:05 known_hosts

我还尝试将npm install 添加到相同的RUN 命令中。

我觉得我的 git 客户端无法访问 SSH 代理或类似的东西。你有想法吗?

【问题讨论】:

    标签: node.js docker ssh gitlab


    【解决方案1】:

    使用 docker 1809+,您可以使用新的 Dockerfile 语法将您的 ssh 文件夹直接挂载到容器中。

    有一个例子很像你需要的in the documentation

    从那里复制并适应您的用例:

    # syntax=docker/dockerfile:experimental
    FROM node:10.15.1-alpine as image
    
    WORKDIR /usr/src/app
    
    RUN apk add --update --no-cache openssh-client git \
     && mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
    
    COPY package.json ./
    RUN --mount=type=ssh npm install
    
    # [...snip...]
    

    然后:docker build --ssh default -t test --squash .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 2018-03-11
      • 1970-01-01
      • 2022-12-14
      • 2021-12-15
      • 2022-11-14
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多