簡體   English   中英

在Dockers中對端點進行REST調用

[英]Making a REST Call to Endpoint in Dockers

我正在構建一個Spring Boot應用程序,它具有幾個不同的REST端點。 可以將其本地打包並成功作為jar文件啟動。 在本地運行時,我可以通過“ http:// localhost:8080 / endpoint?params ..”訪問其端點。 我的任務是現在准備將此應用程序運行在Docker之外。 仍在我的本地計算機上工作,我基於Java:8映像創建了一個Dockers容器。 在此容器中,我已經能夠從.jar成功運行我的應用程序。 我的問題是,從Docker托管應用程序時,我不理解如何調用應用程序內的REST端點,因為從邏輯上講localhost:8080 / endpoint不再響應該調用。

輔助信息:我的本地計算機是Windows,Docker映像是Ubuntu(最終將在Linux服務器上啟動)。

更新:使用以下Dockerfile創建了一個新映像:

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訪問端點

任何幫助將不勝感激。 謝謝!

您需要發布端口(而不是EXPOSE端口)。 公開端口主要用於鏈接和服務上下文。 在僅運行Docker容器的示例中,您只需簡單地發布端口,以便主機可以使用它。 您可以使用--publish-p進行此--publish

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

然后,您可以在主機IP地址的端口8080上訪問應用程序(Windows上的Docker和Mac上的Docker運行應允許localhost:8080正常工作的代理)。

如果您的應用程序在Docker容器內運行,並且您可以使用localhost:8080 從該容器內部進行訪問,那么您要做的就是在DOCKERFILE中添加EXPOSE指令(請參閱Dockerfile暴露選項 )。

EXPOSE 8080

然后,您可能將能夠使用來自docker0網絡接口的默認IP從主機(安裝並運行Docker的主機)進行訪問。 通常,此IP為172.17.0.X,其中第一個容器的X為2,依此類推(請參閱docker default network )。

因此,嘗試使用“ http://172.17.0.2:8080/endpoint?params ..”從泊塢窗外部進行訪問。 另外,如果要允許外部訪問(或從主機使用localhost訪問),則應使用-p參數從EXPOSE指令啟動容器映射端口(請參閱映射暴露的傳入端口 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM