gpt4 book ai didi

node.js - 通过 SSH 在 Docker 中安装私有(private) npm 包

转载 作者:行者123 更新时间:2023-12-02 20:45:46 25 4
gpt4 key购买 nike

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

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

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 key ,该 key 也在 Gitlab 中注册并在我自己的 Mac 上本地工作。
  • /root/.ssh/known_hosts : 包含 gitlab.com ssh-rsa 的条目, gitlab.com ecdsa-sha2-nistp256 , gitlab.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 代理或类似的东西。你有想法吗?

    最佳答案

    使用 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 .

    关于node.js - 通过 SSH 在 Docker 中安装私有(private) npm 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54887409/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com