From 333f9290159bbaf8dc63d81c6c87843a88645492 Mon Sep 17 00:00:00 2001 From: john30 Date: Sun, 7 Feb 2021 14:39:20 +0100 Subject: [PATCH] remove unnecessary parts, add arm32v5, allow using different dir+image --- contrib/docker/Dockerfile | 5 +-- contrib/docker/Dockerfile.arm32v5 | 43 +++++++++++++++++++++++ contrib/docker/Dockerfile.arm32v7 | 5 +-- contrib/docker/Dockerfile.arm64v8 | 5 +-- contrib/docker/Dockerfile.i386 | 5 +-- contrib/docker/Dockerfile.template | 7 ++-- contrib/docker/README.md | 1 + contrib/docker/manifest.template | 5 +++ contrib/docker/release/Dockerfile | 7 ++-- contrib/docker/release/Dockerfile.arm32v5 | 43 +++++++++++++++++++++++ contrib/docker/release/Dockerfile.arm32v7 | 7 ++-- contrib/docker/release/Dockerfile.arm64v8 | 7 ++-- contrib/docker/release/Dockerfile.i386 | 7 ++-- contrib/docker/update.sh | 32 +++++++++-------- 14 files changed, 124 insertions(+), 55 deletions(-) create mode 100644 contrib/docker/Dockerfile.arm32v5 create mode 100644 contrib/docker/release/Dockerfile.arm32v5 diff --git a/contrib/docker/Dockerfile b/contrib/docker/Dockerfile index 57c8029e..4bdbf956 100755 --- a/contrib/docker/Dockerfile +++ b/contrib/docker/Dockerfile @@ -9,15 +9,12 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH amd64 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_debian.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY diff --git a/contrib/docker/Dockerfile.arm32v5 b/contrib/docker/Dockerfile.arm32v5 new file mode 100644 index 00000000..5ecde319 --- /dev/null +++ b/contrib/docker/Dockerfile.arm32v5 @@ -0,0 +1,43 @@ +FROM multiarch/qemu-user-static as qemu +FROM arm32v5/debian:stretch as build +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin/ +RUN apt-get update && apt-get install -y \ + libmosquitto-dev libstdc++6 libc6 libgcc1 \ + curl \ + autoconf automake g++ make git \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /build + +ENV EBUSD_ARCH arm32v5 +ENV EBUSD_VERSION 21.1 + +RUN git clone https://github.com/john30/ebusd.git /build \ + && ./make_debian.sh + + + + +FROM arm32v5/debian:stretch-slim +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin/ +RUN apt-get update && apt-get install -y \ + logrotate libmosquitto1 libstdc++6 libc6 libgcc1 \ + && rm -rf /var/lib/apt/lists/* + +LABEL maintainer "ebusd@ebusd.eu" + +ENV EBUSD_VERSION 21.1 +ENV EBUSD_ARCH arm32v5 + +LABEL version "${EBUSD_VERSION}-${EBUSD_ARCH}-devel" + +COPY --from=build /build/ebusd-*_mqtt1.deb ebusd.deb + +RUN dpkg -i ebusd.deb \ + && rm -f ebusd.deb /usr/bin/qemu-arm-static + +EXPOSE 8888 + +COPY docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-f", "--scanconfig"] diff --git a/contrib/docker/Dockerfile.arm32v7 b/contrib/docker/Dockerfile.arm32v7 index 4434b58f..e4262a69 100644 --- a/contrib/docker/Dockerfile.arm32v7 +++ b/contrib/docker/Dockerfile.arm32v7 @@ -9,15 +9,12 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH arm32v7 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_debian.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY diff --git a/contrib/docker/Dockerfile.arm64v8 b/contrib/docker/Dockerfile.arm64v8 index 1fcf3965..f9e3edfe 100644 --- a/contrib/docker/Dockerfile.arm64v8 +++ b/contrib/docker/Dockerfile.arm64v8 @@ -9,15 +9,12 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH arm64v8 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_debian.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY diff --git a/contrib/docker/Dockerfile.i386 b/contrib/docker/Dockerfile.i386 index 3fda2bfc..c1464f18 100644 --- a/contrib/docker/Dockerfile.i386 +++ b/contrib/docker/Dockerfile.i386 @@ -9,15 +9,12 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH i386 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_debian.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY diff --git a/contrib/docker/Dockerfile.template b/contrib/docker/Dockerfile.template index 1d908c51..0f340af6 100644 --- a/contrib/docker/Dockerfile.template +++ b/contrib/docker/Dockerfile.template @@ -9,16 +9,13 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION %EBUSD_VERSION% ENV EBUSD_ARCH %EBUSD_ARCH% +ENV EBUSD_VERSION %EBUSD_VERSION% RUN git clone https://github.com/john30/ebusd.git /build \ && %EBUSD_MAKE% -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY -%EBUSD_UPLOAD_LINE% +%EBUSD_UPLOAD_LINES% FROM %BASE_IMAGE%-slim diff --git a/contrib/docker/README.md b/contrib/docker/README.md index 644e56e4..e8230073 100644 --- a/contrib/docker/README.md +++ b/contrib/docker/README.md @@ -18,6 +18,7 @@ To download the latest release image from the hub, use the following command: The image is able to run on any of the following architectures and the right image will be picked automatically: * amd64 * i386 +* arm32v5 * arm32v7 * arm64v8 diff --git a/contrib/docker/manifest.template b/contrib/docker/manifest.template index c8d2b910..e0bf0643 100644 --- a/contrib/docker/manifest.template +++ b/contrib/docker/manifest.template @@ -8,6 +8,11 @@ manifests: platform: architecture: 386 os: linux + - image: %image_name%-arm32v5 + platform: + architecture: arm + os: linux + variant: v5 - image: %image_name%-arm32v7 platform: architecture: arm diff --git a/contrib/docker/release/Dockerfile b/contrib/docker/release/Dockerfile index 6bd77cbb..4c8f3675 100755 --- a/contrib/docker/release/Dockerfile +++ b/contrib/docker/release/Dockerfile @@ -9,16 +9,13 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH amd64 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_all.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY -RUN if [ -n "$UPLOAD_URL" ] && [ -n "$UPLOAD_CREDENTIALS" ]; then for img in ebusd-*.deb; do echo "upload $img"; curl -u "$UPLOAD_CREDENTIALS" -s -X POST --data-binary "@$img" -H "Content-Type: application/octet-stream" "$UPLOAD_URL/$img?a=$EBUSD_ARCH&v=$EBUSD_VERSION"; done; if [ -n "$UPLOAD_ONLY" ]; then echo "stopping for upload only"; exit 139; fi fi + FROM debian:stretch-slim diff --git a/contrib/docker/release/Dockerfile.arm32v5 b/contrib/docker/release/Dockerfile.arm32v5 new file mode 100644 index 00000000..6a1967e3 --- /dev/null +++ b/contrib/docker/release/Dockerfile.arm32v5 @@ -0,0 +1,43 @@ +FROM multiarch/qemu-user-static as qemu +FROM arm32v5/debian:stretch as build +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin/ +RUN apt-get update && apt-get install -y \ + libmosquitto-dev libstdc++6 libc6 libgcc1 \ + curl \ + autoconf automake g++ make git \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /build + +ENV EBUSD_ARCH arm32v5 +ENV EBUSD_VERSION 21.1 + +RUN git clone https://github.com/john30/ebusd.git /build \ + && ./make_all.sh + + + + +FROM arm32v5/debian:stretch-slim +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin/ +RUN apt-get update && apt-get install -y \ + logrotate libmosquitto1 libstdc++6 libc6 libgcc1 \ + && rm -rf /var/lib/apt/lists/* + +LABEL maintainer "ebusd@ebusd.eu" + +ENV EBUSD_VERSION 21.1 +ENV EBUSD_ARCH arm32v5 + +LABEL version "${EBUSD_VERSION}-${EBUSD_ARCH}" + +COPY --from=build /build/ebusd-*_mqtt1.deb ebusd.deb + +RUN dpkg -i ebusd.deb \ + && rm -f ebusd.deb /usr/bin/qemu-arm-static + +EXPOSE 8888 + +COPY docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-f", "--scanconfig"] diff --git a/contrib/docker/release/Dockerfile.arm32v7 b/contrib/docker/release/Dockerfile.arm32v7 index e0419193..bc130bf9 100644 --- a/contrib/docker/release/Dockerfile.arm32v7 +++ b/contrib/docker/release/Dockerfile.arm32v7 @@ -9,16 +9,13 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH arm32v7 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_all.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY -RUN if [ -n "$UPLOAD_URL" ] && [ -n "$UPLOAD_CREDENTIALS" ]; then for img in ebusd-*.deb; do echo "upload $img"; curl -u "$UPLOAD_CREDENTIALS" -s -X POST --data-binary "@$img" -H "Content-Type: application/octet-stream" "$UPLOAD_URL/$img?a=$EBUSD_ARCH&v=$EBUSD_VERSION"; done; if [ -n "$UPLOAD_ONLY" ]; then echo "stopping for upload only"; exit 139; fi fi + FROM arm32v7/debian:stretch-slim diff --git a/contrib/docker/release/Dockerfile.arm64v8 b/contrib/docker/release/Dockerfile.arm64v8 index 553c5bee..658c3460 100644 --- a/contrib/docker/release/Dockerfile.arm64v8 +++ b/contrib/docker/release/Dockerfile.arm64v8 @@ -9,16 +9,13 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH arm64v8 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_all.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY -RUN if [ -n "$UPLOAD_URL" ] && [ -n "$UPLOAD_CREDENTIALS" ]; then for img in ebusd-*.deb; do echo "upload $img"; curl -u "$UPLOAD_CREDENTIALS" -s -X POST --data-binary "@$img" -H "Content-Type: application/octet-stream" "$UPLOAD_URL/$img?a=$EBUSD_ARCH&v=$EBUSD_VERSION"; done; if [ -n "$UPLOAD_ONLY" ]; then echo "stopping for upload only"; exit 139; fi fi + FROM arm64v8/debian:stretch-slim diff --git a/contrib/docker/release/Dockerfile.i386 b/contrib/docker/release/Dockerfile.i386 index a60eb908..c37d469f 100644 --- a/contrib/docker/release/Dockerfile.i386 +++ b/contrib/docker/release/Dockerfile.i386 @@ -9,16 +9,13 @@ RUN apt-get update && apt-get install -y \ WORKDIR /build -ENV EBUSD_VERSION 21.1 ENV EBUSD_ARCH i386 +ENV EBUSD_VERSION 21.1 RUN git clone https://github.com/john30/ebusd.git /build \ && ./make_all.sh -ARG UPLOAD_URL -ARG UPLOAD_CREDENTIALS -ARG UPLOAD_ONLY -RUN if [ -n "$UPLOAD_URL" ] && [ -n "$UPLOAD_CREDENTIALS" ]; then for img in ebusd-*.deb; do echo "upload $img"; curl -u "$UPLOAD_CREDENTIALS" -s -X POST --data-binary "@$img" -H "Content-Type: application/octet-stream" "$UPLOAD_URL/$img?a=$EBUSD_ARCH&v=$EBUSD_VERSION"; done; if [ -n "$UPLOAD_ONLY" ]; then echo "stopping for upload only"; exit 139; fi fi + FROM i386/debian:stretch-slim diff --git a/contrib/docker/update.sh b/contrib/docker/update.sh index 387448da..1d0eb9cc 100755 --- a/contrib/docker/update.sh +++ b/contrib/docker/update.sh @@ -1,8 +1,8 @@ #!/bin/bash -BASE_IMAGE=debian:stretch +DEFAULT_IMAGE=debian:stretch EBUSD_VERSION=`cat ../../VERSION` -archs='amd64 i386 arm32v7:arm arm64v8:aarch64' +archs='amd64 i386 arm32v5:arm arm32v7:arm arm64v8:aarch64' function replaceTemplate () { prefix= @@ -21,32 +21,36 @@ function replaceTemplate () { fi sed \ -e "s#%QEMU_FROM_LINE%#${qemu_from_line}#g" \ - -e "s#%BASE_IMAGE%#${prefix}${BASE_IMAGE}#g" \ + -e "s#%BASE_IMAGE%#${prefix}${BASE_IMAGE:-$DEFAULT_IMAGE}#g" \ -e "s#%QEMU_FROM_COPY%#${qemu_from_copy}#g" \ -e "s#%EBUSD_MAKE%#${make}#g" \ -e "s#%EBUSD_VERSION%#${EBUSD_VERSION}#g" \ -e "s#%EBUSD_VERSION_VARIANT%#${version_variant}#g" \ -e "s#%EBUSD_ARCH%#${arch}#g" \ -e "s#%EXTRA_RM%#${extra_rm}#g" \ - -e "s#%EBUSD_UPLOAD_LINE%#${upload_line}#g" \ + -e "s#%EBUSD_UPLOAD_LINES%#${upload_lines}#g" \ Dockerfile.template > "${dir}Dockerfile${suffix}" echo "updated ${dir}Dockerfile${suffix}" } -# devel updates -version_variant='-devel' -make='./make_debian.sh' -dir='' -upload_line='' -for arch in $archs; do - replaceTemplate -done +if [[ -z "$1" ]]; then + # devel updates + version_variant='-devel' + make='./make_debian.sh' + dir='' + upload_line='' + for arch in $archs; do + replaceTemplate + done +fi # release updates version_variant='' make='./make_all.sh' -dir='release/' -upload_line='RUN if [ -n "\$UPLOAD_URL" ] \&\& [ -n "\$UPLOAD_CREDENTIALS" ]; then for img in ebusd-*.deb; do echo "upload \$img"; curl -u "\$UPLOAD_CREDENTIALS" -s -X POST --data-binary "@\$img" -H "Content-Type: application/octet-stream" "\$UPLOAD_URL/\$img?a=\$EBUSD_ARCH\&v=\$EBUSD_VERSION"; done; if [ -n "\$UPLOAD_ONLY" ]; then echo "stopping for upload only"; exit 139; fi fi' +dir=${1:-release/} +if [[ -n "$1" ]]; then + upload_lines='ARG UPLOAD_URL\nARG UPLOAD_CREDENTIALS\nARG UPLOAD_OS\nARG UPLOAD_ONLY\nRUN if [ -n "\$UPLOAD_URL" ] \&\& [ -n "\$UPLOAD_CREDENTIALS" ]; then for img in ebusd-*.deb; do echo -n "upload \$img: "; curl -fs -u "\$UPLOAD_CREDENTIALS" -X POST --data-binary "@\$img" -H "Content-Type: application/octet-stream" "\$UPLOAD_URL/\$img?a=\$EBUSD_ARCH\&o=\$UPLOAD_OS\&v=\$EBUSD_VERSION" || echo "failed"; done; if [ -n "\$UPLOAD_ONLY" ]; then echo "stopping for upload only"; exit 139; fi fi' +fi for arch in $archs; do replaceTemplate done