gpt4 book ai didi

java - 为什么从 Docker 镜像的 jar 文件已损坏?

转载 作者:行者123 更新时间:2023-12-01 19:54:06 25 4
gpt4 key购买 nike

我使用 Docker 使用curl 下载了 jar 文件 (jenkins-cli.jar)。使用命令:

RUN curl --insecure -O http://192.168.99.100:8080/jnlpJars/jenkins-cli.jar

这是 Dockerfile,它复制手动下载的 jar 文件并下载文件。

FROM ubuntu:14.04
# Install Java.
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y software-properties-common && \
add-apt-repository ppa:webupd8team/java -y && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle

#Install dependencies
RUN apt-get -y update && \
apt-get -yqq --no-install-recommends install bash git bzip2 curl unzip && \
apt-get update

EXPOSE 8080
VOLUME /jenkins

ENV JENKINS_URL "http://192.168.99.100:8080"
ENV PRIVATE_KEY "C:\Users\himn\.ssh\id_rsa"
COPY jenkins-cli.jar /jenkins-cli.jar
RUN curl -H "Accept: application/zip" http://192.168.99.100:8080/jnlpJars/jenkins-cli.jar -o /opt/jenkins-cli.jar
VOLUME /ssh
ENTRYPOINT ["bash"]

我尝试了注释中提到的文件命令,以下是输出:root@e31bbf40f650:/# file jenkins-cli.jar(复制的jar文件)jenkins-cli.jar:Zip归档数据,至少v1.0才能提取

root@e31bbf40f650:/opt# file jenkins-cli.jar(构建镜像时下载的jar文件)jenkins-cli.jar:HTML 文档,ASCII 文本,带有 CRLF、LF 行终止符

使用 less 命令输出 jenkins-ci.html。

root@e31bbf40f650:/opt# less jenkins-ci.html
<!-- IE friendly error message walkround.
if error message from server is less than
512 bytes IE v5+ will use its own error
message instead of the one returned by
server. -->






<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
html,body{
height:100%;
padding:0;
margin:100;
}
.oc{
display:table;
width:100%;
height:100%;
}
.ic{
display:table-cell;
vertical-align:middle;
height:100%;
}
div.msg{
display:block;
border:1px solid #30c;
padding:0;
width:500px;
font-family:helvetica,sans-serif;
margin:10px auto;
}
h1{
font-weight:bold;
color:#fff;
font-size:14px;
margin:0;
padding:2px;
text-align:center;
background: #30c;
}
p{
font-size:12px;
margin:15px auto;
width:75%;
font-family:helvetica,sans-serif;
text-align:left;
}
</style>
<title>
504 Gateway Timeout: remote server did not respond to the proxy
</title>
</head>
<body>
<div class="oc">
<div class="ic">
<div class="msg">
<h1>
504 Gateway Timeout: remote server did not respond to the proxy
jenkins-ci.html

这是我的 docker 文件,它托管 jenkins 服务器

FROM ubuntu:14.04
# Install Java.
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y software-properties-common && \
add-apt-repository ppa:webupd8team/java -y && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle

# get maven 3.2.2 and verify its checksum
RUN wget --no-verbose -O /tmp/apache-maven-3.2.2.tar.gz http://archive.apache.org/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz; \
echo "87e5cc81bc4ab9b83986b3e77e6b3095 /tmp/apache-maven-3.2.2.tar.gz" | md5sum -c
ARG BASE_URL=https://apache.osuosl.org/maven/ven-3/${MAVEN_VERSION}/binaries

# install maven
RUN tar xzf /tmp/apache-maven-3.2.2.tar.gz -C /opt/; \
ln -s /opt/apache-maven-3.2.2 /opt/maven; \
ln -s /opt/maven/bin/mvn /usr/local/bin; \
rm -f /tmp/apache-maven-3.2.2.tar.gz
ENV MAVEN_HOME /opt/maven


# Install dependencies
RUN apt-get -y update && \
apt-get -yqq --no-install-recommends install bash git bzip2 curl unzip && \
apt-get update

copy jenkins war file to the container
#ADD http://mirrors.jenkins.io/war-stable/2.107.3/jenkins.war /opt/jenkins.war
COPY jenkins.war /opt/jenkins.war
ENV JENKINS_HOME /jenkins

# configure the container to run jenkins, mapping container port 8080 to that host port
RUN mkdir /jenkins/
COPY proxy.xml /jenkins/proxy.xml
COPY config_updated.xml opt/config_updated.xml

USER root
ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org

COPY settings.xml /usr/share/maven/conf/settings.xml
RUN mkdir /jenkins/plugins

COPY /jenkins.war /usr/share/jenkins/jenkins.war
RUN echo 2.107.1 > /jenkins/jenkins.install.UpgradeWizard.state
RUN echo 2.107.1 > /jenkins/jenkins.install.InstallUtil.lastExecVersion


#Install plugins
ENV JAVA_OPTS="-Xmx4096m"
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

COPY /plugins.sh usr/local/bin/plugins.sh
COPY /plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/ref/plugins.txt
ENTRYPOINT ["java","-jar","/usr/share/jenkins/jenkins.war"]

最佳答案

ls 输出中的

2832 并不意味着 2.83MB,而是意味着 2832字节。我想您应该尝试将其重命名为以 .html 结尾的文件名,然后在网络浏览器中打开它,或者只是使用 less 查看它。这两种方法之一应该可以告诉您问题所在。

关于java - 为什么从 Docker 镜像的 jar 文件已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50192503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com