【问题标题】:docker image running but can't access rest endpoint in spring boot applicationdocker 镜像正在运行,但无法在 Spring Boot 应用程序中访问 REST 端点
【发布时间】: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 时,它运行成功

标签: spring docker spring-boot


【解决方案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 映像中

      【讨论】:

        猜你喜欢
        • 2020-04-18
        • 1970-01-01
        • 2021-08-12
        • 1970-01-01
        • 2021-09-08
        • 2020-03-12
        • 1970-01-01
        • 2021-08-04
        • 2020-08-10
        相关资源
        最近更新 更多