Docker 中的 Docker - Jenkins Docker Pipeline - 如何连接到外部服务

and*_*mel 1 jenkins-pipeline docker-in-docker verdaccio

我有以下设置

  • jenkins 在 docker 容器中运行
  • 在同级 docker 容器中,我运行一个私有 npm 注册表
  • 我使用 Docker Pipeline 插件和 Jenkinsfile 构建打字稿库(带有节点 docker 容器)
  • 我想将该库发布到该私有注册表,以便能够在其他构建作业中使用它

问题是,由于注册表在主机上的端口上运行,因此无法从构建脚本生成的构建库的 docker 容器中的 docker 访问它。我没有找到有关如何在 jenkinsfile 中执行类似 --net="host" (来自 docker run)之类的操作的信息。我想这会起作用吗?

知道如何改进通过节点 docker 容器构建的设置,但能够发布到注册表吗?

and*_*mel 5

我通过将所有三个容器(jenkins、npm-registry 和为构建生成的容器)连接到同一个自定义 docker 网络来修复此问题。

当我使用 Ansible 配置整个 Jenkins 服务器时,我在 ansible 脚本中添加了以下内容:

  • 我创建了一个 docker 网络“Jenkins_network”
  • 我将詹金斯容器连接到该网络
  • 我将 npm-registry 容器连接到该网络

在 jenkinsfile 中,我添加到了args '--net="jenkins_network"'docker 块,现在是

pipeline {
  agent {
      docker {
          image 'node:lts-alpine'
          args  '--net="jenkins_network"'
      }
  }
  stages {
  ...
Run Code Online (Sandbox Code Playgroud)