【问题标题】:Pass ssh-agent to dockerfile to install private repository modules将 ssh-agent 传递给 dockerfile 以安装私有存储库模块
【发布时间】:2021-01-29 06:47:21
【问题描述】:

我正在尝试自动化 Jenkins 管道中的 docker 构建。在我的 dockerfile 中,我基本上构建了一个节点应用程序。在我的 npm 安装中,我有一些需要操作系统绑定的私有 git 存储库,因此必须安装在容器中。当我手动运行它时,我将我的 ssh 密钥 (id_rsa) 传输到用于执行 npm 安装的 dockerfile。现在,我的问题是在 jenkins 管道中运行此任务时,我将配置一个 ssh-agent(Jenkins 插件)。无法从 ssh-agent 中提取私钥。我应该如何将我的 ssh-agent 传递给我的 dockerfile。

编辑 1:

我得到了它的部分工作:

Docker Build Command:
DOCKER_BUILDKIT=1 docker build --no-cache -t $DOCKER_REGISTRY_URL/$IMAGE_NAME:v$BUILD_NUMBER --ssh default . &&

然后在 Docker 文件中:

这很好用:

RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT -o StrictHostKeyChecking=no" 
git clone git@github.com:****

奇怪的是这不起作用:

RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT -o StrictHostKeyChecking=no" npm install git+ssh//git@github.com:****

我觉得这和StrictHostKeyChecking=no有关

【问题讨论】:

  • 您可以将您的 ssh 密钥作为秘密字符串转发并使用 docker 环境变量。然后在您的 docker 脚本中依赖该 env var 在运行时设置您的 npm ssh 要求。
  • @boly38 根据今天的进度编辑了原始问题。
  • 什么是“npm install git”?你的意思是“git clone && npm install”吗?
  • @boly38 实际上没有这个命令基本上是从一个私人 git 仓库安装一个包。所以命令将是 npm install git+ssh://github.com/path/to/repo

标签: docker jenkins npm


【解决方案1】:

我终于通过在 Dockerfile 中使用 ROOT 用户并将 npm 缓存设置为 root 来让它工作。 问题是 git 使用 /root/.ssh 文件夹,而 npm 使用不同的路径 - /home/.ssh 因为它的 npm 缓存设置在 /home/.ssh

对于仍在苦苦挣扎的人,这是我使用的配置

Docker 构建命令:

DOCKER_BUILDKIT=1 docker build --no-cache -t test --ssh default .

Dockerfile:

USER root

RUN apt-get update && \
    apt-get install -y \
        git \
        openssh-server \
        openssh-client
RUN mkdir -p -m 600 /root/.ssh && ssh-keyscan github.com >> /root/.ssh/known_hosts && echo "Host *\n  StrictHostKeyChecking no" > /root/.ssh/config
RUN echo "Check ssh_config" && cat /root/.ssh/config
RUN rm -rf node_modules
RUN npm config set cache /root
RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT" npm install

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2021-02-04
    • 2023-03-20
    • 2023-03-23
    • 2021-11-04
    相关资源
    最近更新 更多