# Проблема
Вы запускаете с:
docker run -p 8083:8083 myrest-app
Но вам нужно бежать как:
docker run --network "host" --name "app" myrest-app
Таким образом, передавая флаг --network
со значением host
позволит вам использовать контейнер для доступа к вашей компьютерной сети.
Пожалуйста, не обращайте внимания на мой первый подход, вместо этого используйте лучшую альтернативу, которая не предоставляет контейнер всей сети хоста ... возможно заставить его работать, но это не лучшая практика.
Лучшая альтернатива
Создайте сеть для использования обоими контейнерами:
docker network create external-api
Затем запустите оба контейнера с флагом --network external-api
.
docker run --network "external-api" --name "app" -p 8083:8083 myrest-app
и
docker run -d --network "external-api" --name "api" -p 3000:3000 dockerExternalId/external-rest-api
Использование флага -p
для публикации портов для контейнера api
необходимо только в том случае, если вы хотите получить к нему доступ из браузера компьютеров, в противном случае просто не указывайте их, посколькуони не нужны для связи двух контейнеров в сети external-api
.
TIP : извлечение Docker не требуется, при запуске Docker попытается извлечь образ, еслине нашел его в вашем компьютере.Дайте мне знать, как все прошло ...
Вызов внешнего API
Итак, в обоих решениях я добавил флаг --name
, чтобы мы могли добраться до другого контейнера всеть.
Таким образом, чтобы получить доступ к внешнему API из моего приложения отдыха, вам нужно использовать URL http://api:3000/externalrestapi/testresource
.
Обратите внимание, как я заменил localhost
на api
, который соответствует значениюдля --name
флаг команды docker run для вашего внешнего API.