当我尝试从Dockerfile构建映像时,为什么会出现“unzip:short read”?

问题描述 投票:4回答:3

来自Spring Microservices in Action的书:我正在尝试使用Docker Maven Plugin构建一个docker镜像,以便将Java微服务作为Docker容器部署到云端。

Dockerfile:

FROM openjdk:8-jdk-alpine
RUN mkdir -p /usr/local/configserver
ADD jce_policy-8.zip /tmp/
RUN unzip /tmp/jce_policy-8.zip && \
    rm /tmp/jce_policy-8.zip && \
    yes | cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
ADD @[email protected] /usr/local/configserver/
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh

与Dockerfile中的步骤4相关的输出:

...

---> Using cache
---> dd33d4c12d29
Step 4/8 : RUN unzip /tmp/jce_policy-8.zip && rm /tmp/jce_policy-8.zip && yes | cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/

---> Running in 1071273ceee5
Archive:  /tmp/jce_policy-8.zip
unzip: short read

当我尝试构建图像时,为什么会得到unzip: short read

docker dockerfile unzip alpine docker-maven-plugin
3个回答
3
投票

您的jce_policy-8.zip存档可能被识别为压缩存档,并通过ADD指令进行扩展。如果是这样,您可以跳过下一行的解压缩。或者,切换到COPY指令,该指令不对本地存档进行特殊处理。

一般情况下,我建议始终使用COPY指令从构建上下文中引入文件和目录。只有在您特别需要额外的解包行为时才使用ADD


3
投票

I'm find solved link

FROM openjdk:8-jdk-alpine
RUN  apk update && apk upgrade && apk add netcat-openbsd && apk add curl
RUN mkdir -p /usr/local/configserver
RUN cd /tmp/ && \
    **curl -L -b "oraclelicense=a" http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip -O** && \
    unzip jce_policy-8.zip && \
    rm jce_policy-8.zip && \
    yes |cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
ADD @[email protected] /usr/local/configserver/
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh

3
投票

不知何故,在下载jce zip文件时,curl on alpine linux发行版无法正确设置cookie头。它似乎下载了一个zip文件,但实际上它是一个HTML错误页面。如果您查看该文件,您可以看到它是一个html文件。我用wget而不是curl,它成功下载了文件。然后解压缩操作按预期工作。

FROM openjdk:8-jdk-alpine
RUN  apk update && apk upgrade && apk add netcat-openbsd
RUN mkdir -p /usr/local/configserver
RUN cd /tmp/ && \
    wget 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip' --header "Cookie: oraclelicense=accept-securebackup-cookie" && \
    unzip jce_policy-8.zip && \
    rm jce_policy-8.zip && \
    yes |cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
ADD @[email protected] /usr/local/configserver/
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh
© www.soinside.com 2019 - 2024. All rights reserved.