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.properties
或application-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