【问题标题】:Docker in Docker - Jenkins Docker Pipeline - how to connect to outside ServiceDocker in Docker - Jenkins Docker Pipeline - 如何连接到外部服务
【发布时间】:2020-10-20 15:01:16
【问题描述】:

我有以下设置

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

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

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

【问题讨论】:

  • 我们成功地使用了 DNS:注册 jenkins.internal.yourdomain.comnpm.internal.yourdomain.com 并让 jenkins 发布到 npm.internal.yourdomain.com

标签: jenkins-pipeline docker-in-docker verdaccio


【解决方案1】:

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

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

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

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

pipeline {
  agent {
      docker {
          image 'node:lts-alpine'
          args  '--net="jenkins_network"'
      }
  }
  stages {
  ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 2019-07-29
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多