Не удается связаться с контейнером Jenkins из отдельного контейнера с помощью HTTP-запроса - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть служба, some-service, которая должна отправлять http-запросы к Jenkins службе - обе работают в отдельных Docker контейнерах. Моя проблема в том, что всякий раз, когда я делаю запрос, мое соединение отклоняется.

И some-service, и Jenkins работают на портах 3030 и 4040 с именами хостов some-service и jenkins соответственно.

Я могу успешно нажать Jenkins на моем локальном компьютере за пределами some-service с помощью:

curl -v http://localhost:4040/

Однако я не могу достичь Jenkins изнутри some-service, используя :

curl -v http://jenkins:4040/

Я использую этот простой файл Docker-compose.yaml для создания some-service и Jenkins:

version: '3'

services:

  some-service:
    container_name: service
    image: service:latest
    hostname: some-service
    build:
      context: service/
      dockerfile: Dockerfile
    environment:
      GET_HOSTS_FROM: dns
    networks:
      - eg-net
    ports:
      - 3030:3030
    depends_on:
      - jenkins
    links:
      - jenkins
    labels:
      kompose.service.type: LoadBalancer

  jenkins:
    container_name: jenkins
    image: jenkinsci/blueocean
    restart: always
    hostname: jenkins
    networks:
      - eg-net
    ports:
      - 4040:8080
    volumes:
      - ./jenkins-data:/var/jenkins_home

networks:
  eg-net:
    driver: bridge

1 Ответ

2 голосов
/ 09 апреля 2020

Вы не можете получить доступ к http://jenkins: 4040 / изнутри вашей службы, поскольку порт 4040 открыт только для хоста . Вот почему curl -v http://localhost:4040/ на вашем хост-компьютере работает.

Если вы хотите получить доступ к jenkins из другого контейнера, вы должны использовать порт 8080, потому что этот порт открыт в сети. Так что curl -v http://jenkins:8080/ изнутри вашего сервиса будет работать.

Надеюсь, это прояснит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...