При использовании docker compose я не могу получить две службы для связи друг с другом.Идея состоит в том, чтобы получить службу Node.JS для связи со службой Java / Spring.
Я пытался использовать «ссылки», помещая их в ту же «сеть», а затем отправляя запросы на * 1004.* и возвращается ERR_NAME_NOT_RESOLVED.
В службе Node.JS, которую я пытался использовать Axios и модуль http, ни одна из них не работает (ERR_NAME_NOT_RESOLVED).Я также попробовал 'localhost', который тоже не работает (ERR_CONNECTION_REFUSED).Сервис Spring - это буквально просто открытая конечная точка REST (что, как я знаю, работает, поскольку я могу получить к ней прямой доступ).
Я также пытался передать ссылку на сервис через переменные среды, например (внутри docker-compose.yml).
environment:
- SERVICE_HOST=serviceB
Переменная env внутри проекта Node.JS не определена при вызове ниже
process.env.SERVICE_HOST
Я использую Windows с панелью инструментов Docker, но также пробовал тот же проектв виртуальной машине Ubuntu.
serviceA:
build: ./serviceA/
ports:
- "8080:8080"
networks:
- my_network
serviceB:
build: ./serviceB/
ports:
- "9003:9003"
networks:
- my_network
networks:
my_network:
driver: bridge
axios.get("http://serviceB:9003/test")
.then(function(res){
console.log(res);
})
Я ожидал, что оператор console.log в службе Node.JS ответит результатами вызова restB ServiceB вместо сообщений об ошибках.
Я новичок в использовании docker-compose, поэтому я ожидаю, что мне здесь не хватает чего-то очевидного, но я не смог найти ничего, что решило бы мою проблему в Интернете, ни в подобных вопросах на SO.
РЕДАКТИРОВАТЬ Добавлен весь файл yaml и ошибки для лучшего понимания.
version: '3'
services:
# Consul
consul:
container_name: consul
image: consul:latest
ports:
- "8500:8500"
- "8300:8300"
hostname: consul
networks:
- front_end
- back_end
# Actor Service
actor_service:
build: ./actor_service/
ports:
- "9001:8080"
depends_on:
- actor_service_db
- consul
networks:
- back_end
actor_service_db:
image: postgres:9.4.5
depends_on:
- consul
networks:
- back_end
environment:
- POSTGRES_DB=actor
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- CONSUL_HTTP_ADDR=https://consul:8500
# Movie Service
movie_service:
build: ./movie_service/
ports:
- "9002:8080"
depends_on:
- movie_service_db
- consul
networks:
- back_end
movie_service_db:
image: postgres:9.4.5
depends_on:
- consul
networks:
- front_end
environment:
- POSTGRES_DB=movie
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- CONSUL_HTTP_ADDR=https://consul:8500
# Movie Aggregate Service
movie_aggregate_service:
container_name: movie_aggregate_service
build:
context: ./movie_aggregate_service/
ports:
- "9003:8080"
depends_on:
- consul
- movie_service
- actor_service
networks:
- front_end
- back_end
hostname: movie_aggregate_service
# Frontend
front_end:
build: ./front_end/
ports:
- "8080:8080"
networks:
- front_end
environment:
- "CONSUL_HOST=consul"
links:
- consul
- movie_aggregate_service
networks:
front_end:
driver: bridge
back_end:
driver: bridge
Ошибки консоли браузера и вывод