我正在尝试使用 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 创建映像的正确方法是什么
如果您打算下载包 wildfly-27.0.1.Final.tar.gz 并在
/opt/jboss
下解压,则需要对 Dockerfile 应用以下修复:
RUN microdnf install gzip
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"]