【发布时间】: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