도커에서 엔드포인트로 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
'programing' 카테고리의 다른 글
| Python3, MariaDB, OpenVPN 암호 확인 실패 (0) | 2023.09.06 |
|---|---|
| DBever Community Edition에서 Excel 내보내기 옵션은 어디에 있습니까? (0) | 2023.09.06 |
| 텍스트로 옵션을 선택하려면 어떤 선택기가 필요합니까? (0) | 2023.09.06 |
| 크롬이 AJAX 폼의 비밀번호를 기억하게 하는 방법? (0) | 2023.09.06 |
| Spring Boot - EnableAutoConfiguration with Exclude not working (0) | 2023.09.06 |