You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于GraalVM镜像的Docker容器运行Quarkus示例应用遇问题

问题分析与解决步骤

核心原因

你的问题主要出在Docker容器网络端口未映射,以及部分启动参数限制了服务的可访问范围。


步骤1:确保容器端口映射到宿主机

Windows宿主机与Docker容器属于独立的网络环境,若未将容器内的8118端口映射到宿主机,即使容器内服务正常启动,外部也无法访问。

  • 先停止当前容器:
    docker stop contenedor-graalvm-1
    
  • 删除原容器(若需保留数据可先做备份):
    docker rm contenedor-graalvm-1
    
  • 重新创建带端口映射的容器:
    docker run -d -p 8118:8118 --name contenedor-graalvm-1 container-registry.oracle.com/graalvm/community:ol8-java17-22.3.0-b1
    
    这里-p 8118:8118表示将宿主机的8118端口映射到容器内的8118端口。

步骤2:正确启动Quarkus原生镜像

在容器内启动服务时,必须绑定到0.0.0.0,这样服务会监听容器的所有网络接口,允许宿主机通过映射端口访问。

进入容器并启动服务:

docker exec -it contenedor-graalvm-1 bash
cd code-with-quarkus-one/target
./code-with-quarkus-one-1.0.0-SNAPSHOT-runner -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=8118

步骤3:验证服务可访问性

在Windows宿主机的浏览器或终端中访问:

http://localhost:8118/hello

额外排查点

  1. 确认容器内服务监听状态:在容器内执行以下命令,检查是否有进程监听8118端口:

    netstat -tulpn | grep 8118
    

    正常输出应显示类似0.0.0.0:8118的监听记录。

  2. 检查Windows防火墙:暂时关闭Windows防火墙测试,若能访问则需添加8118端口的允许规则。

  3. 确认原生镜像构建正确性:确保你是在GraalVM容器内完成的原生镜像构建,执行构建命令时无报错:

    ./mvnw package -Pnative
    

内容的提问来源于stack exchange,提问作者JLLMNCHR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:00:57