По умолчанию docker -compose создает сеть между вашими контейнерами и назначает имя службы в качестве имени хоста.
Таким образом, вы можете достичь product_catalog_service
из order_service
следующим образом: http://product_catalog_service:8081/api/v1/package/250Mbps
Теперь из вашего поста видно, что у вас есть два разных файла docker -compose.yml, по одному для каждой службы. В этом случае каждый контейнер живет в своей собственной сети (созданной docker -compose), и они не могут видеть друг друга, по крайней мере по умолчанию.
Честно говоря, я никогда не пытался подключиться два контейнера, созданные из двух разных docker -композитных файлов. Я всегда создаю один файл docker -compose.yml, помещаю туда все мои службы и позволяю docker -compose управлять сетью между ними.
Используя один docker -compose.yml
version: ...
services:
product_catalogue_service:
image: openjdk:8-jdk-alpine
ports:
- "8081:8081"
volumes:
- .:/app
working_dir: /app
command: ./gradlew bootRun
restart: on-failure
order_service:
image: openjdk:8-jdk-alpine
ports:
- "8083:8083"
volumes:
- .:/app
working_dir: /app
command: ./gradlew bootRun
restart: on-failure
И последнее: этот ответ очень подробно объясняет, почему localhost:8081
не работает из вашего order_service
контейнера.