【问题标题】:Docker-compose linking containersDocker-compose 链接容器
【发布时间】:2018-02-11 09:22:13
【问题描述】:

我正在尝试使用 docker compose 设置 CD/CI 构建环境。 我有一个詹金斯容器、一个声纳容器和一个档案容器。问题是,我的詹金斯无法连接到声纳和档案。

我尝试将多个容器链接在一起或将它们加入同一个网络,但仍然没有成功。

在 jenkins 中,我收到以下错误:

Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8081 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

这是我的 docker-compose 文件。

version: '2'

volumes:
  data-jenkins:
    driver: 'local'
  data-postgres:
    driver: 'local'
  data-sonarqube-conf: 
    driver: 'local'
  data-sonarqube-data: 
    driver: 'local'
  data-archiva:
    driver: 'local'

services:
  jenkins:
    image: 'jenkins'
    ports:
      - '8080:8080'
    restart: 'always'
    volumes:
      - 'data-jenkins:/var/jenkins_home'
    links:
      - 'sonarqube:sonarqube'
  postgres:
    image: 'postgres:9.6.1'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'
    ports:
      - '5432:5432'
    restart: 'always'
    volumes:
      - 'data-postgres:/var/lib/postgresql/data'
  sonarqube:
    image: 'sonarqube'
    depends_on:
      - 'postgres'
    ports:
      - '9000:9000'
    links:
      - 'postgres:postgres'
    environment:
      - 'SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/'
      - 'SONARQUBE_JDBC_USERNAME=postgres'
      - 'SONARQUBE_JDBC_PASSWORD=postgres'
    volumes:
      - 'data-sonarqube-data:/var/lib/sonarqube/data'
      - 'data-sonarqube-conf:/var/lib/sonarqube/conf'
  archiva:
    image: 'xetusoss/archiva'
    ports:
      - '8081:8080'
    volumes:
      - 'data-archiva:/var/archiva'
    environment:
      - 'SSL_ENABLED=false'

Jenkins 容器似乎生活在一个单独的环境中。有谁可以将所有环境加入到一起?已经为这个问题苦苦挣扎了将近一个星期了

【问题讨论】:

  • 是的,可以这么说,他们生活在不同的环境中。为了帮助您了解正在发生的事情,请在全部启动后进入 jenkins 容器 (docker exit -it [CONTAINER_ID] bash),然后进入 ping archiva。您正在尝试连接到 localhost,这将无法正常工作。它可能对ping archiva 起作用,也可能不起作用(因为你没有将它链接到詹金斯容器),但你可以弄乱它。看起来您当前正在链接到 sonarqube,所以我希望 ping 能够正常工作。

标签: docker jenkins docker-compose


【解决方案1】:

要从 Jenkins 引用您的 sonarqube 容器,请使用 sonarqube:9000 docker 会将您的服务名称 sonarqube 转换为该容器的 ip。

我还建议使用不同的网络而不是链接来连接您的容器。

【讨论】:

  • 没问题。请接受答案,以便其他用户也可以参考。
  • @ssc327 为什么使用不同的网络比使用链接更好?我想要更多关于这个的细节
  • @Loren 我相信链接已被弃用。看看stackoverflow.com/questions/41294305/…
【解决方案2】:

这是因为 ping 将发送到 sonarqube。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-21
    • 2016-04-16
    • 2020-03-20
    • 2017-09-02
    • 2023-03-09
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多