From a202d8da2e85775e84fb6904d91769eda4f5a6cb Mon Sep 17 00:00:00 2001 From: buanet Date: Sun, 29 Aug 2021 00:23:31 +0200 Subject: [PATCH] testing multiarch --- .github/workflows/build-debian-image-dev.yml | 32 ++++++-- debian/Dockerfile-arm32v7 | 83 ++++++++++++++++++++ debian/Dockerfile-arm64v8 | 83 ++++++++++++++++++++ 3 files changed, 193 insertions(+), 5 deletions(-) create mode 100644 debian/Dockerfile-arm32v7 create mode 100644 debian/Dockerfile-arm64v8 diff --git a/.github/workflows/build-debian-image-dev.yml b/.github/workflows/build-debian-image-dev.yml index d86f6f9..319abab 100644 --- a/.github/workflows/build-debian-image-dev.yml +++ b/.github/workflows/build-debian-image-dev.yml @@ -1,5 +1,5 @@ # Github action to build Docker image from dev branch (tag: dev) -name: Build debian based image from dev +name: Build debian based image (dev) on: workflow_dispatch: @@ -8,7 +8,7 @@ on: - dev jobs: - bulid-dev: + bulid-dev-image: runs-on: ubuntu-latest steps: - name: Checkout repo (dev) @@ -61,7 +61,7 @@ jobs: username: ${{ secrets.PACKAGES_USER }} password: ${{ secrets.PACKAGES_PASS }} - - name: Build Docker image (slim-amd64) + - name: Build Docker image (amd64) uses: docker/build-push-action@v2.6.1 with: context: ./debian @@ -72,12 +72,34 @@ jobs: buanet/iobroker:dev-amd64, ghcr.io/buanet/iobroker:dev-amd64 + - name: Build Docker image (arm32v7) + uses: docker/build-push-action@v2.6.1 + with: + context: ./debian + file: ./debian/Dockerfile-arm32v7 + push: true + platforms: linux/arm/v7 + tags: | + buanet/iobroker:dev-arm32v7, + ghcr.io/buanet/iobroker:dev-arm32v7 + + - name: Build Docker image (arm64v8) + uses: docker/build-push-action@v2.6.1 + with: + context: ./debian + file: ./debian/Dockerfile-arm84v8 + push: true + platforms: linux/arm64/v8 + tags: | + buanet/iobroker:dev-arm64v8, + ghcr.io/buanet/iobroker:dev-arm64v8 + - name: Create and push manifests run: | sed -e "s/\${VERSION}/dev/g" -e "s/\${DOCKERTAG}/dev/g" ./manifest.yml > manifest_dev.yaml - #./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_dev.yaml + ./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_dev.yaml sed -e "s/\${VERSION}/dev/g" -e "s/\${DOCKERTAG}/dev/g" ./manifest_ghcr.yml > manifest_ghcr_dev.yaml - #./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev.yaml + ./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev.yaml - name: Delete untagged images from GitHub packages uses: actions/github-script@v3 diff --git a/debian/Dockerfile-arm32v7 b/debian/Dockerfile-arm32v7 new file mode 100644 index 0000000..a05be5e --- /dev/null +++ b/debian/Dockerfile-arm32v7 @@ -0,0 +1,83 @@ +FROM debian:bullseye-slim + +LABEL org.opencontainers.image.title="ioBroker Docker Image" \ + org.opencontainers.image.description="Docker image for ioBroker smarthome software" \ + org.opencontainers.image.authors="info@buanet.de" \ + org.opencontainers.image.url="https://github.com/buanet/ioBroker.docker" \ + org.opencontainers.image.version="${VERSION}" \ + org.opencontainers.image.created="${DATI}" + +ENV DEBIAN_FRONTEND noninteractive + +# Install prerequisites +RUN apt-get update && apt-get install -y \ + curl \ + gosu \ + jq \ + locales \ + procps \ + sudo \ + udev \ + wget \ + && rm -rf /var/lib/apt/lists/* + +# Install node +RUN curl -sL https://deb.nodesource.com/setup_12.x | bash \ + && apt-get update && apt-get install -y nodejs \ + && rm -rf /var/lib/apt/lists/* + +# Generating locales +RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \ + && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ + && locale-gen + +# Create scripts directorys and copy scripts +RUN mkdir -p /opt/scripts/ \ + && mkdir -p /opt/userscripts/ \ + && chmod 777 /opt/scripts/ \ + && chmod 777 /opt/userscripts/ +WORKDIR /opt/scripts/ +COPY scripts/* ./ +RUN chmod +x *.sh +WORKDIR /opt/userscripts/ +COPY scripts/* ./ +RUN chmod +x *.sh + +# Install ioBroker +WORKDIR / +RUN apt-get update \ + && curl -sL https://iobroker.net/install.sh | bash - \ + && mkdir -p /opt/scripts/.docker_config/ \ + && echo $(hostname) > /opt/scripts/.docker_config/.install_host \ + && echo "starting" > /opt/scripts/.docker_config/.healthcheck \ + && echo $(hostname) > /opt/.firstrun \ + && rm -rf /var/lib/apt/lists/* + +# Backup initial ioBroker and userscript folder +RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker \ + && tar -cf /opt/initial_userscripts.tar /opt/userscripts + +# Setting up iobroker-user (shell and home directory) +RUN chsh -s /bin/bash iobroker \ + && usermod --home /opt/iobroker iobroker \ + && usermod -u 1000 iobroker \ + && groupmod -g 1000 iobroker + +# Setting up ENVs +ENV DEBIAN_FRONTEND="teletype" \ + LANG="de_DE.UTF-8" \ + LANGUAGE="de_DE:de" \ + LC_ALL="de_DE.UTF-8" \ + SETGID=1000 \ + SETUID=1000 \ + TZ="Europe/Berlin" + +# Expose default admin ui port +EXPOSE 8081 + +# Healthcheck +HEALTHCHECK --interval=15s --timeout=5s --retries=5 \ + CMD ["/bin/bash", "-c", "/opt/scripts/healthcheck.sh"] + +# Run startup-script +ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"] diff --git a/debian/Dockerfile-arm64v8 b/debian/Dockerfile-arm64v8 new file mode 100644 index 0000000..a05be5e --- /dev/null +++ b/debian/Dockerfile-arm64v8 @@ -0,0 +1,83 @@ +FROM debian:bullseye-slim + +LABEL org.opencontainers.image.title="ioBroker Docker Image" \ + org.opencontainers.image.description="Docker image for ioBroker smarthome software" \ + org.opencontainers.image.authors="info@buanet.de" \ + org.opencontainers.image.url="https://github.com/buanet/ioBroker.docker" \ + org.opencontainers.image.version="${VERSION}" \ + org.opencontainers.image.created="${DATI}" + +ENV DEBIAN_FRONTEND noninteractive + +# Install prerequisites +RUN apt-get update && apt-get install -y \ + curl \ + gosu \ + jq \ + locales \ + procps \ + sudo \ + udev \ + wget \ + && rm -rf /var/lib/apt/lists/* + +# Install node +RUN curl -sL https://deb.nodesource.com/setup_12.x | bash \ + && apt-get update && apt-get install -y nodejs \ + && rm -rf /var/lib/apt/lists/* + +# Generating locales +RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \ + && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ + && locale-gen + +# Create scripts directorys and copy scripts +RUN mkdir -p /opt/scripts/ \ + && mkdir -p /opt/userscripts/ \ + && chmod 777 /opt/scripts/ \ + && chmod 777 /opt/userscripts/ +WORKDIR /opt/scripts/ +COPY scripts/* ./ +RUN chmod +x *.sh +WORKDIR /opt/userscripts/ +COPY scripts/* ./ +RUN chmod +x *.sh + +# Install ioBroker +WORKDIR / +RUN apt-get update \ + && curl -sL https://iobroker.net/install.sh | bash - \ + && mkdir -p /opt/scripts/.docker_config/ \ + && echo $(hostname) > /opt/scripts/.docker_config/.install_host \ + && echo "starting" > /opt/scripts/.docker_config/.healthcheck \ + && echo $(hostname) > /opt/.firstrun \ + && rm -rf /var/lib/apt/lists/* + +# Backup initial ioBroker and userscript folder +RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker \ + && tar -cf /opt/initial_userscripts.tar /opt/userscripts + +# Setting up iobroker-user (shell and home directory) +RUN chsh -s /bin/bash iobroker \ + && usermod --home /opt/iobroker iobroker \ + && usermod -u 1000 iobroker \ + && groupmod -g 1000 iobroker + +# Setting up ENVs +ENV DEBIAN_FRONTEND="teletype" \ + LANG="de_DE.UTF-8" \ + LANGUAGE="de_DE:de" \ + LC_ALL="de_DE.UTF-8" \ + SETGID=1000 \ + SETUID=1000 \ + TZ="Europe/Berlin" + +# Expose default admin ui port +EXPOSE 8081 + +# Healthcheck +HEALTHCHECK --interval=15s --timeout=5s --retries=5 \ + CMD ["/bin/bash", "-c", "/opt/scripts/healthcheck.sh"] + +# Run startup-script +ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"]