docker 镜像正在运行,但无法在 Spring Boot 应用程序中访问 REST 端点

Posted

技术标签:

【中文标题】docker 镜像正在运行,但无法在 Spring Boot 应用程序中访问 REST 端点【英文标题】:docker image running but can't access rest endpoint in spring boot application 【发布时间】:2019-01-16 11:15:22 【问题描述】:

我创建了一个 spring-boot 应用程序,当使用 maven 构建和运行它时,它运行成功。但是当我运行我的应用程序的 docker 时,它正在控制台中运行,但我无法访问任何 REST 端点浏览器给出页面未找到错误。

这是我Dockerfile的内容

FROM java:8
EXPOSE 5555:5555
ADD /hotline-api/target/hotline-api.jar hotline-api.jar
ENTRYPOINT ["java","-jar","hotline-api.jar","--spring.profiles.active=test"]

【问题讨论】:

能否上传启动日志 如何运行镜像?您使用的命令是什么? docker run -p 5555:5555 my_image_name 您的application.propertiesapplication-test.properties 中有server.port=5555 吗? 是的,服务器端口是 5555,当我使用 java -jar 运行 .jar 时,它运行成功 【参考方案1】:

您还需要在运行映像时发布端口

docker run -p 5555:5555 IMAGE_NAME

确保您还根据您的配置文件(默认/dev/test)从您的properties 文件中公开相同的端口。

【讨论】:

嗨,Mehraj,我也是这样做的【参考方案2】:

使用 docker 机器在 Windows 7 上设置 docker 时遇到了同样的问题。 REST 端点映射到 docker 机器的 ip 地址。我通过使用以下方式获取 docker 机器 ip 来解决它:

码头机器ip

然后使用它来访问 REST 端点,例如:

192.168.12.100:8080/登录

【讨论】:

【参考方案3】:

添加更多参数:

ENTRYPOINT ["java","-jar","hotline-api.jar","--spring.profiles.active=test","--server.port=5555"]

然后构建容器:

docker run -p 5555:5555 IMAGE_NAME

【讨论】:

【参考方案4】:

确保你有/hotline-api/target/hotline-api.jar的罐子 并且还通过执行 gradle 或 maven 构建来确保存在最新的 jar。 如果您进行引导运行,jar 将不会更新,这意味着您新配置的端点不会出现在 jar 中,因此不会出现在 docker 映像中

【讨论】:

以上是关于docker 镜像正在运行,但无法在 Spring Boot 应用程序中访问 REST 端点的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到我本地 Spring Boot 中在 docker 上运行的 redis sentinel

在Docker容器中运行Spring Boot GraalVM原生镜像

如何运行自定义 docker 镜像 testContainer

无法运行 OpenFOAM docker 镜像

尝试运行 Spring Boot 应用程序时无法部署到 docker

通过 SSH 推送 Docker 镜像(分布式)