Docker镜像使用Jib插件:不能击中休息端点本地容器运行时?



我有一个非常简单的spring bootweb应用程序,我使用spring初始化器创建。

我添加了以下controller:

@Controller
@RequestMapping("hello")
public class TestController {
@GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> sayHello() {
return ResponseEntity.ok("Hello!");
}
}

当我在intelij本地运行它时,我可以成功地击中以下端点并获得响应:

http://localhost:8080/hello

我已经将使用jib创建的映像推送到我的docker hub注册表,并且可以成功地提取映像。

然而,当我通过docker运行container时,如下所示,我得到This site can’t be reached在相同的URL。

docker run --name localJibExample123 -d -p 8080:80 bc2cbf3b85d1

我能够运行其他容器ok,可以击中端点,这里的问题是什么?

正在运行的docker ps为我正在运行的容器返回这个:

"java -cp /app/resou…"   8 minutes ago    Up 8 minutes                  0.0.0.0:8080->80/tcp   localJibExample222

所以我的应用程序应该是可访问的:

http://localhost:8080/hello

默认情况下,Spring-boot在端口8080上运行。我们在docker run ...命令中使用的端口映射将主机的端口8080映射到容器的端口80(... -p 8080:80 ...,相关docker run文档(docs.docker.com))。由于在容器的80端口上没有任何运行,所以在访问http://localhost:8080时没有得到响应。

修复是直接的:我们用docker run ... -p 8080:8080 ...替换docker run ... -p 8080:80 ...。这将映射到容器的端口8080, spring引导应用程序正在监听该端口。当我们现在访问http://localhost:8080时,我们将得到一个响应。

相关内容

  • 没有找到相关文章

最新更新