diff --git a/.travis.yml b/.travis.yml index a2db7f5..c6d08b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ install: - docker run --rm $DOCKER_REPO:$TARGET uname -a after_success: - docker login -e=$DOCKER_EMAIL -u=$DOCKER_USERNAME -p=$DOCKER_PASSWORD - - docker push $DOCKER_REPO:$TARGET + - docker push $DOCKER_REPO:$VERSION-$TARGET env: #global: # - DOCKER_REPO=openhab/openhab @@ -25,6 +25,9 @@ env: - TARGET=amd64 VERSION=2.0.0 - TARGET=armhf VERSION=2.0.0 - TARGET=arm64 VERSION=2.0.0 + - TARGET=amd64 VERSION=2.1.0-snapshot + - TARGET=armhf VERSION=2.1.0-snapshot + - TARGET=arm64 VERSION=2.1.0-snapshot matrix: fast_finish: true diff --git a/2.1.0-snapshot/amd64/Dockerfile b/2.1.0-snapshot/amd64/Dockerfile new file mode 100644 index 0000000..2959ec6 --- /dev/null +++ b/2.1.0-snapshot/amd64/Dockerfile @@ -0,0 +1,84 @@ +# openhab image +# +# ------------------------------------------------------------------------------ +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# ------------------------------------------------------------------------------ +# + +FROM multiarch/debian-debootstrap:amd64-jessie + +# Set download urls +ENV OPENHAB_URL="https://openhab.ci.cloudbees.com/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-2.1.0-SNAPSHOT.zip" +ENV JAVA_URL="https://www.azul.com/downloads/zulu/zdk-8-ga-linux_x64.tar.gz" + +# Set variables +ENV \ + APPDIR="/openhab" \ + OPENHAB_HTTP_PORT='8080' \ + OPENHAB_HTTPS_PORT='8443' \ + EXTRA_JAVA_OPTS='' \ + JAVA_HOME='/usr/lib/java-8' + +# Basic build-time metadata as defined at http://label-schema.org +ARG BUILD_DATE +ARG VCS_REF +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.docker.dockerfile="/Dockerfile" \ + org.label-schema.license="EPL" \ + org.label-schema.name="openHAB" \ + org.label-schema.url="http://www.openhab.com/" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-type="Git" \ + org.label-schema.vcs-url="https://github.com/openhab/openhab-docker.git" + +# Install basepackages +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + ca-certificates \ + unzip \ + wget \ + && rm -rf /var/lib/apt/lists/* + +# Install java +RUN wget -nv -O /tmp/java.tar.gz ${JAVA_URL} &&\ + mkdir ${JAVA_HOME} && \ + tar -xvf /tmp/java.tar.gz --strip-components=1 -C ${JAVA_HOME} + +# Add openhab user & handle possible device groups for different host systems +# Container base image puts dialout on group id 20, uucp on id 10 +# GPIO Group for RPI access +RUN adduser --disabled-password --gecos '' --home ${APPDIR} openhab &&\ + groupadd -g 14 uucp2 &&\ + groupadd -g 16 dialout2 &&\ + groupadd -g 18 dialout3 &&\ + groupadd -g 32 uucp3 &&\ + groupadd -g 997 gpio &&\ + adduser openhab dialout &&\ + adduser openhab uucp &&\ + adduser openhab uucp2 &&\ + adduser openhab dialout2 &&\ + adduser openhab dialout3 &&\ + adduser openhab uucp3 &&\ + adduser openhab gpio + +# Install openhab +# Set permissions for openhab. Export TERM variable. See issue #30 for details! +RUN wget -nv -O /tmp/openhab.zip ${OPENHAB_URL} &&\ + unzip -q /tmp/openhab.zip -d ${APPDIR} &&\ + rm /tmp/openhab.zip &&\ + mkdir -p ${APPDIR}/userdata/logs &&\ + touch ${APPDIR}/userdata/logs/openhab.log && \ + cp -a ${APPDIR}/userdata ${APPDIR}/userdata.dist && \ + cp -a ${APPDIR}/conf ${APPDIR}/conf.dist && \ + chown -R openhab:openhab ${APPDIR} && \ + echo "export TERM=dumb" | tee -a ~/.bashrc + +# Expose volume with configuration and userdata dir +WORKDIR ${APPDIR} +VOLUME ${APPDIR}/conf ${APPDIR}/userdata ${APPDIR}/addons +EXPOSE 8080 8443 5555 +USER openhab +CMD ["./start.sh"] + diff --git a/2.1.0-snapshot/arm64/Dockerfile b/2.1.0-snapshot/arm64/Dockerfile new file mode 100644 index 0000000..68084fa --- /dev/null +++ b/2.1.0-snapshot/arm64/Dockerfile @@ -0,0 +1,90 @@ +# openhab image +# +# ------------------------------------------------------------------------------ +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# ------------------------------------------------------------------------------ +# + +FROM multiarch/debian-debootstrap:arm64-jessie + +# Set download urls +ENV OPENHAB_URL="https://openhab.ci.cloudbees.com/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-2.1.0-SNAPSHOT.zip" +ENV JAVA_URL="https://www.azul.com/downloads/zulu/zdk-8-ga-linux_aarch32hf.tar.gz" + +# Set variables +ENV \ + APPDIR="/openhab" \ + OPENHAB_HTTP_PORT='8080' \ + OPENHAB_HTTPS_PORT='8443' \ + EXTRA_JAVA_OPTS='' \ + JAVA_HOME='/usr/lib/java-8' + +# Basic build-time metadata as defined at http://label-schema.org +ARG BUILD_DATE +ARG VCS_REF +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.docker.dockerfile="/Dockerfile" \ + org.label-schema.license="EPL" \ + org.label-schema.name="openHAB" \ + org.label-schema.url="http://www.openhab.com/" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-type="Git" \ + org.label-schema.vcs-url="https://github.com/openhab/openhab-docker.git" + +# Install basepackages +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + ca-certificates \ + unzip \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN dpkg --add-architecture armhf && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + libc6:armhf \ + && rm -rf /var/lib/apt/lists/* + +# Install java +RUN wget -nv -O /tmp/java.tar.gz ${JAVA_URL} &&\ + mkdir ${JAVA_HOME} && \ + tar -xvf /tmp/java.tar.gz --strip-components=1 -C ${JAVA_HOME} + +# Add openhab user & handle possible device groups for different host systems +# Container base image puts dialout on group id 20, uucp on id 10 +# GPIO Group for RPI access +RUN adduser --disabled-password --gecos '' --home ${APPDIR} openhab &&\ + groupadd -g 14 uucp2 &&\ + groupadd -g 16 dialout2 &&\ + groupadd -g 18 dialout3 &&\ + groupadd -g 32 uucp3 &&\ + groupadd -g 997 gpio &&\ + adduser openhab dialout &&\ + adduser openhab uucp &&\ + adduser openhab uucp2 &&\ + adduser openhab dialout2 &&\ + adduser openhab dialout3 &&\ + adduser openhab uucp3 &&\ + adduser openhab gpio + +# Install openhab +# Set permissions for openhab. Export TERM variable. See issue #30 for details! +RUN wget -nv -O /tmp/openhab.zip ${OPENHAB_URL} &&\ + unzip -q /tmp/openhab.zip -d ${APPDIR} &&\ + rm /tmp/openhab.zip &&\ + mkdir -p ${APPDIR}/userdata/logs &&\ + touch ${APPDIR}/userdata/logs/openhab.log && \ + cp -a ${APPDIR}/userdata ${APPDIR}/userdata.dist && \ + cp -a ${APPDIR}/conf ${APPDIR}/conf.dist && \ + chown -R openhab:openhab ${APPDIR} && \ + echo "export TERM=dumb" | tee -a ~/.bashrc + +# Expose volume with configuration and userdata dir +WORKDIR ${APPDIR} +VOLUME ${APPDIR}/conf ${APPDIR}/userdata ${APPDIR}/addons +EXPOSE 8080 8443 5555 +USER openhab +CMD ["./start.sh"] + diff --git a/2.1.0-snapshot/armhf/Dockerfile b/2.1.0-snapshot/armhf/Dockerfile new file mode 100644 index 0000000..34d9cf1 --- /dev/null +++ b/2.1.0-snapshot/armhf/Dockerfile @@ -0,0 +1,84 @@ +# openhab image +# +# ------------------------------------------------------------------------------ +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# ------------------------------------------------------------------------------ +# + +FROM multiarch/debian-debootstrap:armhf-jessie + +# Set download urls +ENV OPENHAB_URL="https://openhab.ci.cloudbees.com/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-2.1.0-SNAPSHOT.zip" +ENV JAVA_URL="https://www.azul.com/downloads/zulu/zdk-8-ga-linux_aarch32hf.tar.gz" + +# Set variables +ENV \ + APPDIR="/openhab" \ + OPENHAB_HTTP_PORT='8080' \ + OPENHAB_HTTPS_PORT='8443' \ + EXTRA_JAVA_OPTS='' \ + JAVA_HOME='/usr/lib/java-8' + +# Basic build-time metadata as defined at http://label-schema.org +ARG BUILD_DATE +ARG VCS_REF +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.docker.dockerfile="/Dockerfile" \ + org.label-schema.license="EPL" \ + org.label-schema.name="openHAB" \ + org.label-schema.url="http://www.openhab.com/" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-type="Git" \ + org.label-schema.vcs-url="https://github.com/openhab/openhab-docker.git" + +# Install basepackages +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + ca-certificates \ + unzip \ + wget \ + && rm -rf /var/lib/apt/lists/* + +# Install java +RUN wget -nv -O /tmp/java.tar.gz ${JAVA_URL} &&\ + mkdir ${JAVA_HOME} && \ + tar -xvf /tmp/java.tar.gz --strip-components=1 -C ${JAVA_HOME} + +# Add openhab user & handle possible device groups for different host systems +# Container base image puts dialout on group id 20, uucp on id 10 +# GPIO Group for RPI access +RUN adduser --disabled-password --gecos '' --home ${APPDIR} openhab &&\ + groupadd -g 14 uucp2 &&\ + groupadd -g 16 dialout2 &&\ + groupadd -g 18 dialout3 &&\ + groupadd -g 32 uucp3 &&\ + groupadd -g 997 gpio &&\ + adduser openhab dialout &&\ + adduser openhab uucp &&\ + adduser openhab uucp2 &&\ + adduser openhab dialout2 &&\ + adduser openhab dialout3 &&\ + adduser openhab uucp3 &&\ + adduser openhab gpio + +# Install openhab +# Set permissions for openhab. Export TERM variable. See issue #30 for details! +RUN wget -nv -O /tmp/openhab.zip ${OPENHAB_URL} &&\ + unzip -q /tmp/openhab.zip -d ${APPDIR} &&\ + rm /tmp/openhab.zip &&\ + mkdir -p ${APPDIR}/userdata/logs &&\ + touch ${APPDIR}/userdata/logs/openhab.log && \ + cp -a ${APPDIR}/userdata ${APPDIR}/userdata.dist && \ + cp -a ${APPDIR}/conf ${APPDIR}/conf.dist && \ + chown -R openhab:openhab ${APPDIR} && \ + echo "export TERM=dumb" | tee -a ~/.bashrc + +# Expose volume with configuration and userdata dir +WORKDIR ${APPDIR} +VOLUME ${APPDIR}/conf ${APPDIR}/userdata ${APPDIR}/addons +EXPOSE 8080 8443 5555 +USER openhab +CMD ["./start.sh"] + diff --git a/update.sh b/update.sh index 8d5dd4b..687cf8a 100755 --- a/update.sh +++ b/update.sh @@ -1,8 +1,8 @@ #!/bin/bash set -eo pipefail -# Dockerfiles to be generated -versions="2.0.0" +# Dockerfiles to be generated. At the moment we will focus on version 2.1.0-snapshot, because 2.0.0 is stable. +versions="2.1.0-snapshot" arches="amd64 armhf arm64" # Generate header @@ -24,20 +24,21 @@ print_header() { print_baseimage() { case $arch in amd64) - baseimage="multiarch/debian-debootstrap:amd64-jessie" + java_url="https://www.azul.com/downloads/zulu/zdk-8-ga-linux_x64.tar.gz" ;; - armhf) - baseimage="multiarch/debian-debootstrap:armhf-jessie" - ;; - arm64) - baseimage="multiarch/debian-debootstrap:arm64-jessie" + armhf|arm64) + java_url="https://www.azul.com/downloads/zulu/zdk-8-ga-linux_aarch32hf.tar.gz" ;; default) - baseimage="error" + java_url="error" ;; esac cat >> $1 <<-EOI - FROM $baseimage + FROM multiarch/debian-debootstrap:$arch-jessie + + # Set download urls + ENV OPENHAB_URL="https://openhab.ci.cloudbees.com/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-2.1.0-SNAPSHOT.zip" + ENV JAVA_URL="$java_url" EOI } @@ -45,8 +46,13 @@ print_baseimage() { # Print metadata && basepackages print_basepackages() { cat >> $1 <<-'EOI' - ARG DOWNLOAD_URL="https://bintray.com/openhab/mvn/download_file?file_path=org%2Fopenhab%2Fdistro%2Fopenhab%2F2.0.0%2Fopenhab-2.0.0.zip" - ENV APPDIR="/openhab" OPENHAB_HTTP_PORT='8080' OPENHAB_HTTPS_PORT='8443' EXTRA_JAVA_OPTS='' + # Set variables + ENV \ + APPDIR="/openhab" \ + OPENHAB_HTTP_PORT='8080' \ + OPENHAB_HTTPS_PORT='8443' \ + EXTRA_JAVA_OPTS='' \ + JAVA_HOME='/usr/lib/java-8' # Basic build-time metadata as defined at http://label-schema.org ARG BUILD_DATE @@ -60,43 +66,36 @@ print_basepackages() { org.label-schema.vcs-type="Git" \ org.label-schema.vcs-url="https://github.com/openhab/openhab-docker.git" - # Install Basepackages - RUN \ - apt-get update && \ + # Install basepackages + RUN apt-get update && \ apt-get install --no-install-recommends -y \ + ca-certificates \ unzip \ wget \ - && rm -rf /var/lib/apt/lists/* - - # Install gosu - ENV GOSU_VERSION 1.10 - RUN set -x \ - && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ - && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ - && export GNUPGHOME="$(mktemp -d)" \ - && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ - && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ - && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \ - && chmod +x /usr/local/bin/gosu \ - && gosu nobody true + && rm -rf /var/lib/apt/lists/* EOI } -# Install Oracle Java +# Print 32-bit for arm64 arch +print_lib32_support_arm64() { + cat >> $1 <<-'EOI' + RUN dpkg --add-architecture armhf && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + libc6:armhf \ + && rm -rf /var/lib/apt/lists/* + +EOI +} + +# Install java print_java() { cat >> $1 <<-'EOI' - # Install Oracle Java - RUN \ - echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \ - echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \ - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \ - echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ - apt-get update && \ - apt-get install --no-install-recommends -y oracle-java8-installer && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /var/cache/oracle-jdk8-installer - ENV JAVA_HOME /usr/lib/jvm/java-8-oracle + # Install java + RUN wget -nv -O /tmp/java.tar.gz ${JAVA_URL} &&\ + mkdir ${JAVA_HOME} && \ + tar -xvf /tmp/java.tar.gz --strip-components=1 -C ${JAVA_HOME} EOI } @@ -121,29 +120,24 @@ print_openhab() { adduser openhab uucp3 &&\ adduser openhab gpio - WORKDIR ${APPDIR} - - RUN \ - wget -nv -O /tmp/openhab.zip ${DOWNLOAD_URL} &&\ - unzip -q /tmp/openhab.zip -d ${APPDIR} &&\ - rm /tmp/openhab.zip - - RUN mkdir -p ${APPDIR}/userdata/logs && touch ${APPDIR}/userdata/logs/openhab.log - - # Copy directories for host volumes - RUN cp -a /openhab/userdata /openhab/userdata.dist && \ - cp -a /openhab/conf /openhab/conf.dist - COPY entrypoint.sh / - ENTRYPOINT ["/entrypoint.sh"] - + # Install openhab # Set permissions for openhab. Export TERM variable. See issue #30 for details! - RUN chown -R openhab:openhab ${APPDIR} && \ + RUN wget -nv -O /tmp/openhab.zip ${OPENHAB_URL} &&\ + unzip -q /tmp/openhab.zip -d ${APPDIR} &&\ + rm /tmp/openhab.zip &&\ + mkdir -p ${APPDIR}/userdata/logs &&\ + touch ${APPDIR}/userdata/logs/openhab.log && \ + cp -a ${APPDIR}/userdata ${APPDIR}/userdata.dist && \ + cp -a ${APPDIR}/conf ${APPDIR}/conf.dist && \ + chown -R openhab:openhab ${APPDIR} && \ echo "export TERM=dumb" | tee -a ~/.bashrc # Expose volume with configuration and userdata dir + WORKDIR ${APPDIR} VOLUME ${APPDIR}/conf ${APPDIR}/userdata ${APPDIR}/addons EXPOSE 8080 8443 5555 - CMD ["server"] + USER openhab + CMD ["./start.sh"] EOI } @@ -159,9 +153,11 @@ do print_header $file; print_baseimage $file; print_basepackages $file; + if [ "$arch" == "arm64" ]; then + print_lib32_support_arm64 $file; + fi print_java $file; print_openhab $file; - cp entrypoint.sh `dirname $file` echo "done" done done