У меня есть 3 микросервиса, и я запускаю их с помощью Docker.
Dockerfile каждого из них.Внешний интерфейс:
FROM node:alpine
LABEL maintainer="2262288@gmail.com"
WORKDIR /usr/app/front
EXPOSE 3000
COPY ./ ./
RUN npm install
CMD ["npm", "start"]
Backend 1 (задний):
FROM openjdk:8-jdk-alpine
LABEL maintainer="2262288@gmail.com"
VOLUME /tmp
EXPOSE 8099
ARG JAR_FILE=build/libs/auth-0.0.3.jar
ADD ${JAR_FILE} digital.jar
ENTRYPOINT ["java","-jar","/digital.jar"]
Backend 2 (сообщение):
FROM openjdk:8-jdk-alpine
LABEL maintainer="2262288@gmail.com"
VOLUME /tmp
EXPOSE 8082
ARG JAR_FILE=build/libs/sender-0.0.1.jar
ADD ${JAR_FILE} sender.jar
ENTRYPOINT ["java","-jar","/sender.jar"]
Внешний интерфейс отправляет REST-запрос к backend1, чем, backend1 отправляет REST-запрос на backend2 (сообщение).
Я опубликовал его на хабе и запустил на внешнем сервере в docker-compose:
версия: '3.7'
services:
web:
image: account/front:0.0.1
restart: on-failure
ports:
- 80:3000
back:
image: account/back:0.0.3
restart: on-failure
ports:
- 8099:8099
message:
image: account/message:0.0.1
restart: on-failure
ports:
- 8082:8082
Внутренние службы запускаются на портах:
message_1_e8eb3b2d2477 | 2019-09-24 09:34:00.882 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8082 (http) with context path ''
back_1_1982cc6e57f7 | 2019-09-24 09:34:07.403 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8099 (http) with context path ''
Как мы видим, каждая служба запускается на своем собственном порту.
Чем я пытаюсь отправить запрос на фронт -> назад ->сообщение.назад отправить запрос к сообщению и получить ответ:
java.net.ConnectException: Operation timed out (Connection timed out)
Чем запросы к службе сообщений не доходят до него.
Когда я отправляю запрос напрямую Почтальону, он работает.
Что не так?
UPD.запрос спереди назад:
http://81.100.122.90:8099/auth/register
body:
{"username":"ksgcf","password":"123","firstName":"John","lastName":"Doe","email":"398456234785@gmail.com"}
запрос спины к сообщению (IP-адрес изменен):
String url = "http://81.100.122.90:8082/email";
EmailMessageDto request = new EmailMessageDto(
dto.getEmail(),
"slava_rossii@list.ru",
"Email confirmation",
"Press link: http://dig.lamb.ru/confirm?username="
+ registrationToken.getUsername() + "&token=" + registrationToken.getToken()
);
Итак, я вижу это сообщение при первом запуске docker-compose:
Creating network "project_default" with the default driver