0

I need to build the dockerfile that downloads jenkins.war and through it jenkins-cli.jar need to be downloaded. I have conf.xml also to configure it.** Then I need that image to run in the bash, which needs to run that jar file commands. Here is the code:

    FROM ubuntu:14.04
    RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y  software-properties-common && \
    add-apt-repository ppa:webupd8team/java -y && \
    apt-get update && \
    echo oracle-java7-installer shared/accepted-oracle-license-v1-1          select true | /usr/bin/debconf-set-selections && \
    apt-get install -f -y oracle-java8-installer && \
    apt install -y default-jre curl wget git nano; \
    apt-get clean


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

    ENV JAVA_HOME /usr
    ENV PATH $JAVA_HOME/bin:$PATH

    # copy jenkins war file to the container
    ADD http://mirrors.jenkins.io/war-stable/2.107.1/jenkins.war /opt/jenkins.war
    RUN chmod 644 /opt/jenkins.war
    ENV JENKINS_HOME /jenkins

    # configure the container to run jenkins, mapping container port 8080 to that host port
    RUN mkdir /jenkins/
    RUN echo 2.107.1 > /jenkins/jenkins.install.UpgradeWizard.state
    RUN echo 2.107.1 > /jenkins/jenkins.install.InstallUtil.lastExecVersion
    CMD ["nohup","java", "-jar", "/opt/jenkins.war"]
    EXPOSE 8080
    VOLUME /jenkins
    #COPY jenkins-cli.jar /jenkins/jenkins-cli.jar

    #jenkins-cli installation
    ENV JENKINS_URL "http://192.168.99.100:8080"
    RUN curl --insecure http://192.168.99.100:8080/jnlpJars/jenkins-cli.jar \
       --output /jenkins/jenkins-cli.jar
    CMD ["java","-jar","/jenkins/jenkins-cli.jar","-noCertificateCheck","-noKeyAuth"]

Here is what im getting. ERROR

MY ASSUMPTION Do I need to run along congf.xml?If yes , then HOW? Do I need to be running jenkins.war instance in background??? HOW? Thank you in advance

versions

Hithesh
  • 113
  • 1
  • 13

1 Answers1

1

If you see the reference , I can find those comments.

There can only be one CMD instruction in a Dockerfile. If you list more than one CMD then only the last CMD will take effect.

in your dockerfile, there are multiple CMD commands. only the last one will be executed.

If you want to run multiple commands at once. try bash scripts. here is the example

#!/bin/bash

echo "Starting sshd"
exec /usr/sbin/sshd -D &

if [ -z "$1" ];
then
    tail -f $HADOOP_INSTALL/logs/*
fi
Darren Ha
  • 126
  • 5