构建含RedHat OpenJDK 17的WildFly 27 Docker镜像报错求助
解决WildFly 27 + RedHat OpenJDK 17 Docker镜像构建错误的方案
错误原因
你使用的基础镜像registry.access.redhat.com/ubi9/openjdk-17:1.18-1已经预装了OpenJDK 17,错误是因为你的Dockerfile中尝试引用本地不存在的java-17-openjdk-17.0.10.0.7-1.portable.jre.el.x86_64.tar.xz文件,导致构建时无法计算文件校验和。
正确的镜像构建方法
1. 编写正确的Dockerfile
以下是无需额外JDK包的完整Dockerfile,直接基于UBI9 OpenJDK 17镜像安装WildFly 27:
# 基于RedHat UBI9 OpenJDK 17基础镜像 FROM registry.access.redhat.com/ubi9/openjdk-17:1.18-1 # 定义WildFly版本与安装目录 ENV WILDFLY_VERSION=27.0.1.Final ENV WILDFLY_HOME=/opt/wildfly # 安装必要工具(wget、tar)并清理缓存 RUN microdnf install -y wget tar && \ microdnf clean all # 下载、解压WildFly并创建软链接 RUN wget https://github.com/wildfly/wildfly/releases/download/${WILDFLY_VERSION}/wildfly-${WILDFLY_VERSION}.tar.xz && \ tar -xJf wildfly-${WILDFLY_VERSION}.tar.xz -C /opt && \ ln -s /opt/wildfly-${WILDFLY_VERSION} ${WILDFLY_HOME} && \ rm wildfly-${WILDFLY_VERSION}.tar.xz # 添加WildFly命令到系统路径 ENV PATH=${WILDFLY_HOME}/bin:${PATH} # 暴露WildFly默认服务端口 EXPOSE 8080 9990 # 启动WildFly独立模式(允许外部访问) CMD ["standalone.sh", "-b", "0.0.0.0"]
2. Windows环境下的构建注意事项
- 换行符设置:打开Dockerfile,在编辑器右下角将换行符从默认的CRLF切换为LF,避免RUN命令执行时出现语法错误。
- 路径规范:确保Dockerfile所在目录无中文、空格或特殊字符,构建命令使用正斜杠路径(或转义反斜杠)。
- 容器模式切换:打开Docker Desktop,确保已切换到Linux容器模式(基础镜像是Linux架构,Windows容器模式无法兼容)。
3. 执行构建与启动
在Dockerfile所在目录打开命令行,执行以下命令:
# 构建镜像 docker build -t wildfly27-ubi9-jdk17 . # 启动容器,映射8080端口到本地 docker run -p 8080:8080 wildfly27-ubi9-jdk17
启动后访问http://localhost:8080即可验证WildFly服务是否正常运行。
内容的提问来源于stack exchange,提问作者Nishu
相关产品推荐
相关产品推荐

