【问题标题】:Cannot run Spring Boot aplication in Docker (Getting ERR_EMPTY_RESPONSE) in Windows 10?无法在 Windows 10 的 Docker 中运行 Spring Boot 应用程序(获取 ERR_EMPTY_RESPONSE)?
【发布时间】:2021-11-27 21:12:32
【问题描述】:

我的 Spring Boot 应用程序Docker 中运行时遇到问题。

这是嵌入在我的应用中的 Dockerfile,如下所示。

FROM adoptopenjdk:11-jre-hotspot

ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app-0.0.1-SNAPSHOT.jar

ENTRYPOINT ["java","-jar","/app-0.0.1-SNAPSHOT.jar"]

运行mvn clean install后,我得到一个app-0.0.1-SNAPSHOT.jar,然后将它定义到一个Docker文件中

接下来,我运行了这个命令 docker build -t app . 我看到这个容器安装在我的 docker 桌面上。

运行这条命令docker image ls之后,我也在列表中看到了这个容器。

我运行了这个命令 docker run -p 9999:8080 app 在 docker 中运行它。

容器在运行此命令后完美运行 (docker ps)

接下来,我在 Postman 中测试任何 URL,例如 http://localhost:9999/getCategoryById/1 而不是 http://localhost:8080/getCategoryById/1,但我收到了消息(无法发送请求)。当我在浏览器中测试此 URL 时,我收到消息 ERR_EMPTY_RESPONSE

我通过docker inspect container_id 了解了容器 IP 地址,然后我使用了http://172.17.0.2:9999/getCategoryById/1,但没有任何改变。

我还检查了 IP 地址是否管理包(ping 172.17.0.2),但我收到了Request timed out 消息。

这是我的项目链接:Link

如何解决我的问题?

【问题讨论】:

  • 您是否验证了您的 jar 文件在 docker 之外正确运行?一旦确定确实如此,您可以查看容器的日志以查看是否有任何异常会导致使用 docker logs -f container_id 的空响应(-f 以实时跟踪日志)。例如,其中一个原因可能是缺少环境变量。但是,如果没有可用的 jar 文件,就很难准确判断出了什么问题。
  • @geisterfurz007 我也添加了我的项目。

标签: spring-boot docker devops


【解决方案1】:

在您的应用程序中,application.properties 文件中用于为 Spring Boot 嵌入式 Tomcat 服务器配置端口的 server.port 属性是 8082

要访问容器端口8080 上的应用程序,您需要覆盖server.port 属性。可以覆盖属性的一种方法是使用如下环境变量,

docker run -e SERVER_PORT=8080 -p 9999:8080 app

其中SERVER_PORT对应-p <hostPort>:<containerPort>中指定的容器端口

其他选项是直接更新application.properties 文件中的属性,如下所示。更新后,您可以使用与运行 docker 镜像 docker run -p 9999:8080 app 相同的命令

server.port= 8080

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 2020-03-15
    • 2019-05-13
    • 2020-10-03
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多