programing

도커에서 엔드포인트로 REST 호출하기

easyjava 2023. 9. 6. 23:07
반응형

도커에서 엔드포인트로 REST 호출하기

저는 몇 가지 다른 REST 엔드포인트가 있는 Spring Boot 애플리케이션을 만들고 있습니다.로컬로 패키징하여 jar 파일로 성공적으로 실행할 수 있습니다.로컬로 실행할 때 "http://localhost:8080/endpoint?params"를 통해 엔드포인트에 액세스할 수 있습니다.저는 도커스에서 이 애플리케이션을 실행할 준비를 해야 하는 임무를 맡았습니다.여전히 로컬 머신에서 작업 중이며, Java:8 이미지를 기반으로 Dockers 컨테이너를 만들었습니다.이 컨테이너에서 .jar에서 애플리케이션을 성공적으로 실행할 수 있었습니다.문제는 응용 프로그램이 도커 외부에서 호스팅되는 경우 논리적으로 localhost:8080/endpoint가 더 이상 호출에 응답하지 않기 때문에 응용 프로그램 내부의 REST 엔드포인트로 호출하는 방법을 이해할 수 없다는 것입니다.

측면 정보:내 로컬 컴퓨터는 Windows이고 도커 이미지는 Ubuntu입니다(결국 Linux 서버에서 실행됩니다).

업데이트: 다음 도커 파일로 새 이미지 생성:

FROM openjdk:8
MAINTAINER  My Name email@email.com
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
EXPOSE 8080
RUN javac Main.java
CMD ["java", "Main"]

동일한 문제로 http://localhost:8080/endpoint를 통해 끝점에 액세스할 수 없습니다.

어떤 도움이라도 주시면 감사하겠습니다.감사해요!

포트를 게시해야 합니다(아니오).EXPOSEit)). 포트를 노출하는 것은 링크 및 서비스 컨텍스트에 크게 사용됩니다.도커 컨테이너를 실행하는 경우에는 호스트에서 포트를 사용할 수 있도록 포트를 게시하기만 하면 됩니다.당신은 이것을 합니다.--publish아니면-p:

docker run -d --name myapp -p 8080:8080 myappimage

그러면 호스트 IP 주소의 포트 8080에서 응용 프로그램에 액세스할 수 있습니다(Windows의 경우 Docker에서, Mac의 경우 Docker에서 다음을 허용해야 하는 프록시 실행).localhost:8080출근).

응용프로그램이 도커 컨테이너 내부에서 실행 중이고 localhost:8080을 사용하여 컨테이너 내부에서 액세스할 수 있는 경우, DOCKERFILE에 EXPER 명령만 추가하면 됩니다(도커 파일 노출 옵션 참조).

EXPOSE 8080

그러면 도커0 네트워크 인터페이스의 기본 IP를 사용하여 호스트 시스템(도커가 설치되어 실행 중)에서 액세스할 수 있습니다.일반적으로 이 IP는 172.17.0.X이며, 여기서 X는 첫 번째 컨테이너에 대해 2입니다(도커 기본 네트워킹 참조).

따라서 "http://172.17.0.2:8080/endpoint?params"를 사용하여 도커 외부에서 액세스해 보십시오.또한 외부 액세스(또는 호스트 시스템에서 localhost를 사용한 액세스)를 허용하려면 -p 매개 변수를 사용하여 EXPECT 명령에서 포트를 매핑하는 컨테이너를 시작해야 합니다(노출된 수신 포트 매핑 참조).

언급URL : https://stackoverflow.com/questions/44784666/making-a-rest-call-to-endpoint-in-dockers

반응형