FROM openjdk:8-jdk-alpine RUN apk add --no-cache git openssh-client curl bash # for Jenkins AWT ttf-dejavu ARG JENKINS_USER=jenkins ARG UID=1000 ARG HTTP_PORT=8080 ARG JENKINS_HOME=/ephemeral/jenkins # for main web interface: EXPOSE ${HTTP_PORT} ENV JENKINS_HOME=${JENKINS_HOME} ENV CASC_JENKINS_CONFIG=/jcasc_config COPY jcasc_config/* ${CASC_JENKINS_CONFIG}/ RUN mkdir -p ${CASC_JENKINS_CONFIG} && mkdir -p ${JENKINS_HOME}/plugins && adduser -h ${JENKINS_HOME} -u ${UID} -s /bin/bash -D ${JENKINS_USER} && chown -R ${UID} ${JENKINS_HOME} ${CASC_JENKINS_CONFIG} # Jenkins home directory is a volume, so configuration and build history # can be persisted and survive image upgrades VOLUME ${JENKINS_HOME} USER ${JENKINS_USER} ARG JENKINS_UC=https://updates.jenkins.io/stable-2.150/latest/ ENV PLUGINS="jdk-tool script-security command-launcher configuration-as-code configuration-as-code-support configuration-as-code-groovy" RUN curl -sSfL --connect-timeout 20 --retry 3 --retry-delay 0 --retry-max-time 60 ${JENKINS_UC}/jenkins.war -o ${JENKINS_HOME}/jenkins.war RUN for P in ${PLUGINS}; do curl -sSfL --connect-timeout 20 --retry 2 --retry-delay 0 --retry-max-time 60 ${JENKINS_UC}/${P}.hpi -o ${JENKINS_HOME}/plugins/${P}.jpi; done ENV JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false ${JENKINS_JAVA_OPTIONS:-}" ENTRYPOINT java ${JENKINS_JAVA_OPTIONS} -jar ${JENKINS_HOME}/jenkins.war