Извлечь тайм-аут при переадресации порта из контейнера Docker - PullRequest
0 голосов
/ 04 ноября 2019

Я работаю над простым проектом, состоящим из двух контейнеров докеров в сети докеров (мост). Проблема в том, что я получаю тайм-аут от бэкэнда при вызове его с хоста (через переадресацию порта на внешний интерфейс)

Настройка:

docker network create --driver bridge my-network

  1. Бэкэнд Java Spring предоставляет случайные кавычки из базы данных в /randomQuote конечной точке

docker run -it --rm --name backend --network my-network backend:1.0

Интерфейс Javascript для отображения полученной цитаты

docker run -it --rm --name frontend --network my-network -p 8081:8081 frontend:1.0

Код интерфейса для запроса данных (вызывается при нажатии кнопки):

const requestQuote = async() => {
    let response = await fetch(apiUrl + getRandomQuoteEndpoint)
    if(handleErrors(response)){
        quote = await response.json()
        displayQuote()
    }
}

Я пробовал различные версии для apiUrl, такие как:

http://backend:8080
http://172.18.0.2:8080
backend:8080
172.18.0.2:8080

Внутренний интерфейс:

@RequestMapping("/")
public interface QuotesRestController {

    @CrossOrigin()
    @GetMapping("/randomQuote")
    public ResponseEntity<Quote> getRandomQuote();
}

На хосте http://localhost:8081/ правильно отображает frontend контент, но при запросе цитаты I 'Я получаю GET http://172.18.0.2:8080/randomQuote net::ERR_CONNECTION_TIMED_OUT.

curl от внешнего интерфейса и корректно возвращает кавычки, поэтому проблема возникает только тогда, когда я переадресация портов и пытаюсь отобразить на хосте.

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

Это проблема с моей конфигурацией / кодом? Или я должен использовать другой подход?

...