Почему файл jar, созданный в Docker, поврежден? - PullRequest
0 голосов
/ 05 мая 2018

Я скачал файл jar (jenkins-cli.jar), используя Docker, используя curl. Используя команду:

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"]

Я попробовал команду file на обоих, как это упоминалось в комментарии, и следующие результаты: root @ e31bbf40f650: / # файл 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

Вывод jenkins-ci.html с использованием команды less.

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 

Это мой файл докера, на котором размещен сервер 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"]

1 Ответ

0 голосов
/ 06 мая 2018

2832 в выводе ls не означает 2,83 МБ, это означает 2832 байт . Я полагаю, вам следует попробовать переименовать его в имя файла, оканчивающееся на .html, и открыть его в веб-браузере или просто просмотреть его с помощью less. Один из этих двух подходов должен показать вам, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...