使用 redhat open JDK 17 为 Wildfly 27 创建 docker 镜像

问题描述 投票:0回答:1

我正在尝试使用 Wildfly 27 和 Redhat Openjdk 17 构建 docker 映像,下面是 docker 文件。 我将registry.access.redhat.com/ubi9/openjdk-17:1.18-1保留为FROM

FROM registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19-1

USER root
RUN mkdir -p /opt/jboss/

RUN curl -sS https://github.com/wildfly/wildfly/releases/download/27.0.1.Final/wildfly-27.0.1.Final.tar.gz
  
RUN echo "Downloaded JBoss"

# Extract Wildfly
COPY  wildfly-27.0.1.Final.tar.gz /opt/jboss
RUN tar -xzf jboss/wildfly-27.0.1.Final.tar.gz -C /opt/jboss

COPY  standalone.xml /opt/jboss/wildfly/standalone/configuration/

#FROM registry.access.redhat.com/ubi8/openjdk-17:1.19-1
#ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64

EXPOSE 86
EXPOSE 9443

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", "standalone.xml", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

结果:

当我尝试使用 docker build -t appName 构建它时。 ,出现如下错误

错误:无法解决:无法计算缓存密钥:无法计算引用 8387d982-e13d-46e2-8bd8-0f262ea5ae6c::s2b234ci5jrua5fp6qqwgcjy7 的校验和:“/java-17-openjdk-17.0.10.0.7-1.portable。 jre.el.x86_64.tar.xz”:未找到

Docker 环境:Windows。

注意:没有代理问题,文件已下载,我可以在执行时看到下载状态。

我还尝试了其他方法,将 wildfly:27.0.0.Final-jdk17 作为基础,仍然遇到类似的问题

错误:无法解决:无法计算缓存密钥:无法 计算 ref 的校验和 8387d982-e13d-46e2-8bd8-0f262ea5ae6c::s2b234ci5jrua5fp6qqwgcjy7: “/java-17-openjdk-17.0.10.0.7-1.portable.jre.el.x86_64.tar.xz”:不是 找到了

FROM quay.io/wildfly/wildfly:27.0.0.Final-jdk17

USER root

RUN curl -sS https://developers.redhat.com/content-gateway/file/openjdk/January_2024/java-17-openjdk-17.0.10.0.7-1.portable.jre.el.x86_64.tar.xz
  

RUN echo "Downloaded JAVA"

# Extract Wildfly
COPY  java-17-openjdk-17.0.10.0.7-1.portable.jre.el.x86_64.tar.xz /usr/lib/jvm/java/
RUN tar -xzf java-17-openjdk-17.0.10.0.7-1.portable.jre.el.x86_64.tar.xz -C /usr/lib/jvm/java/
EXPOSE 4712

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", "standalone.xml", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

结果:

请建议使用 Redhat JDK 17 为 Wildfly 27 创建映像的正确方法是什么

java docker kubernetes wildfly
1个回答
0
投票

如果您打算下载包 wildfly-27.0.1.Final.tar.gz 并在

/opt/jboss
下解压,则需要对 Dockerfile 应用以下修复:

  • 基础镜像需要 gzip 依赖项以允许 tar 解压缩包:
    RUN microdnf install gzip
  • 使用 curl 的下载步骤需要将输出保存在磁盘上:
    RUN curl -L https://github.com/wildfly/wildfly/releases/download/27.0.1.Final/wildfly-27.0.1.Final.tar.gz -OJ
  • 复制步骤没有用,因为解包步骤将支持它。顺便说一下,它使用了错误的
    COPY
    指令,除非目的是从主机复制软件包而不是下载的软件包:
    COPY  wildfly-27.0.1.Final.tar.gz /opt/jboss
  • 解压缩步骤需要像这样进行调整:
    RUN tar xzvf wildfly-27.0.1.Final.tar.gz -C /opt/jboss/ 

最后 Dockerfile 看起来像这样:

FROM registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19-1

USER root
RUN \
    microdnf install gzip \
    && curl -L https://github.com/wildfly/wildfly/releases/download/27.0.1.Final/wildfly-27.0.1.Final.tar.gz -OJ \
    && echo "Downloaded JBoss" \
    && tar -xzf wildfly-27.0.1.Final.tar.gz -C /opt/jboss

COPY  standalone.xml /opt/jboss/wildfly/standalone/configuration/

#FROM registry.access.redhat.com/ubi8/openjdk-17:1.19-1
#ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64

EXPOSE 86
EXPOSE 9443

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", "standalone.xml", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
© www.soinside.com 2019 - 2024. All rights reserved.