gpt4 book ai didi

java - 在 Docker 中对端点进行 REST 调用

转载 作者:行者123 更新时间:2023-12-02 09:36:34 25 4
gpt4 key购买 nike

我正在构建一个 Spring Boot 应用程序,它有几个不同的 REST 端点。可以在本地成功打包并作为jar文件启动。在本地运行时,我可以通过“http://localhost:8080/endpoint?params ..”访问其端点。我现在的任务是准备这个应用程序以在 Docker 上运行。我仍在本地计算机上工作,创建了一个基于 Java:8 镜像的 Docker 容器。在这个容器中,我已经能够从 .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 来执行此操作:

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

然后,您可以在主机 IP 地址上的端口 8080 访问应用程序(Windows 上的 Docker 和 Mac 上的 Docker 运行一个代理,该代理应允许 localhost:8080 工作)。

关于java - 在 Docker 中对端点进行 REST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com