Сделайте HTTP-запрос из одного контейнера в другой

#java #docker

Вопрос:

Я пытаюсь выполнить HttpRequest из библиотеки в службу поддержки пользователей, но не то, чтобы я пробовал, работает. я видел, что если использовать имя, то это громко орк, поэтому я попытался http://library:8080, но он возвращает ошибку

 java.lang.IllegalArgumentException: unsupported URI
 

Вот мой док-файл:

 FROM openjdk:11-jdk-slim
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
 

и мой докер-сочиняй:

 version: '3.5'

services:
  library:
    build:
      context: ./
    ports:
      - "8081:8081"
    networks:
      - library-network
    restart: on-failure

  mysql-service:
    image: mysql:5.7
    ports:
    - "3306:3306"
    networks:
      - library-network
    environment:
      - MYSQL_ROOT_PASSWORD=admin
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=admin
      - MYSQL_DATABASE=bootdb
    restart: on-failure

  people-service:
    build:
      context: ./
      args:
        JAR_FILE: ./target/library.jar
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=jdbc:mysql://mysql-service:3306/library
    networks:
      - library-network
    depends_on:
      - mysql-service
      - library
    restart: on-failure

networks:
  library-network:
    driver: bridge
 

Комментарии:

1. Вы пробовали измениться http://library:8080 на http://library ?

Ответ №1:

В вашем вопросе говорится: я пытаюсь выполнить HttpRequest из библиотеки в службу поддержки пользователей

Исходя из этого, я предполагаю, что запрос будет инициирован library . Тогда URL-адрес должен выглядеть так http://people-service:8080 . Но из сообщения об ошибке я бы предположил, что вы library не можете запускать http — запросы-независимо от того, куда они направляются, что немного странно. Сначала изучите это, используя простые URL-адреса, такие как http://stackoverflow.com (которые вернут статус http 301).

Комментарии:

1. Спасибо вам за обратную связь. Ответ отредактирован.

2. Хорошо, это то, что я считаю условным ответом. Даже несмотря на то, что у вас также есть возможность задать вопрос в комментарии.