首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载在Docker中运行的Spring应用程序

无法加载在Docker中运行的Spring应用程序
EN

Stack Overflow用户
提问于 2019-11-19 20:55:36
回答 1查看 1.1K关注 0票数 0

我用Gradle v5.6.4创建了一个简单的SpringBootv2.1.10应用程序,并试图在Dockerv18.09.9中运行它,构建1752eb3。应用程序在本地工作,但当我在Docker中运行它时,网页不会在浏览器中加载。不过,它在Docker控制台中正常启动,没有任何错误。

文档内容

代码语言:javascript
复制
FROM java:8
EXPOSE 9090:8181
ADD /build/libs/docker-app-0.0.1-SNAPSHOT.jar docker-app-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","docker-app-0.0.1-SNAPSHOT.jar"]

Springboot应用程序控制器

代码语言:javascript
复制
@RestController
public class Resource {

    @GetMapping(value = "/home")
    public String home() {
        return "<h1>up!!!.....running from docker!!!</h1>";
    }
}

码头运行命令 :~/java-project/docker-app$ sudo docker run -p 9090:8181 springboot

码头控制台输出

代码语言:javascript
复制
:~/java-project/docker-app$ sudo docker run -p 9090:8181 springboot

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v2.1.10.RELEASE)

2019-11-19 20:38:03.870  INFO 1 --- [           main] com.DockerAppApplication                 : Starting DockerAppApplication on 93febc16ff7d with PID 1 (/docker-app-0.0.1-SNAPSHOT.jar started by root in /)
2019-11-19 20:38:03.877  INFO 1 --- [           main] com.DockerAppApplication                 : No active profile set, falling back to default profiles: default
2019-11-19 20:38:06.459  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9090 (http)
2019-11-19 20:38:06.528  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-11-19 20:38:06.528  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.27]
2019-11-19 20:38:06.669  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-11-19 20:38:06.669  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2642 ms
2019-11-19 20:38:07.012  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-11-19 20:38:07.333  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path ''
2019-11-19 20:38:07.339  INFO 1 --- [           main] com.DockerAppApplication                 : Started DockerAppApplication in 4.276 seconds (JVM running for 5.029)

注意:当我在run命令和Dockerfile中提供相同的端口号(sudo docker run -p 9090:9090 springboot)时,它就正常工作了。

如果码头运行命令中有不同的端口号,那么有什么不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-19 21:01:37

TL;博士

将映射更改为-p 8181:9090

你搞错了。-p 9090:8181设置将在主机端口9090上公开容器的端口8181 -假设端口未在使用。您可以在主机上有效地使用端口9090,但是容器中的Spring应用程序没有侦听8181,因此不会从它得到任何响应。

当您执行-p 9090:9090时,您将正确地在主机和容器上公开9090;同样,Spring应用程序正在有效地侦听端口9090,因此您可以访问Spring应用程序并获得一些信息。

无论如何,您要寻找的是-p 8181:9090。这将允许您在浏览器/主机中的端口8181上使用应用程序,而Spring应用程序则使用9090

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58942662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档