kul*_*sin 0 java spring tomcat docker spring-boot
我用 Gradle v5.6.4 创建了一个简单的 Spring Boot v2.1.10 应用程序,并尝试在 Docker v18.09.9 中运行它,构建 1752eb3。该应用程序在本地运行,但是当我在 Docker 中运行它时,该网页不会在浏览器中加载。不过,它在 Docker 控制台中正确启动,没有任何错误。
Dockerfile 内容
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"]
Run Code Online (Sandbox Code Playgroud)
Springboot 应用程序控制器
@RestController
public class Resource {
@GetMapping(value = "/home")
public String home() {
return "<h1>up!!!.....running from docker!!!</h1>";
}
}
Run Code Online (Sandbox Code Playgroud)
Docker 运行命令
:~/java-project/docker-app$ sudo docker run -p 9090:8181 springboot
Docker 控制台输出
:~/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 Code Online (Sandbox Code Playgroud)
注意:当我sudo docker run -p 9090:9090 springboot在运行命令和 Dockerfile 中提供相同的端口号 () 时,它就可以正常工作。
docker run 命令中端口号不同有什么不同?
TL; 博士
将您的映射更改为 -p 8181:9090
你弄错了。该-p 9090:8181设置将8181在主机的端口上公开容器的端口9090——假设该端口没有被使用。您可以有效地使用9090主机上的端口,但容器中的 Spring Boot 应用程序并未侦听8181,因此您不会从中得到任何响应。
当你这样做时,-p 9090:9090你正确地暴露9090在主机和容器上;同样,Spring Boot 应用程序有效地侦听 port 9090,因此您可以访问 Spring Boot 应用程序并获得一些回报。
无论如何,您正在寻找的是-p 8181:9090. 这将允许您8181在浏览器/主机的端口上使用应用程序,而 Spring Boot 应用程序使用9090.
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |