From b8e9d8ad337fbe719b9d39e479d453e5b7f255ac Mon Sep 17 00:00:00 2001 From: David Nedved Date: Wed, 1 Apr 2020 11:42:35 +1000 Subject: [PATCH] include healthcheck in default actions --- .github/workflows/build-workflow.yml | 4 ++-- Dockerfile.dev | 25 +++++++++++++++++++++++++ Dockerfile => Dockerfile.multiarch | 7 +++++++ README.md | 8 ++++++-- docker-compose.yml | 28 +++++++++++++++++++++++++--- sources/healthcheck | 9 +++++++++ 6 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 Dockerfile.dev rename Dockerfile => Dockerfile.multiarch (84%) create mode 100755 sources/healthcheck diff --git a/.github/workflows/build-workflow.yml b/.github/workflows/build-workflow.yml index 23971d3..3dedba0 100644 --- a/.github/workflows/build-workflow.yml +++ b/.github/workflows/build-workflow.yml @@ -28,7 +28,7 @@ jobs: echo ::set-output name=version::${GITHUB_SHA::8} fi echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') - echo ::set-output name=docker_platforms::linux/amd64,linux/arm/v6 + echo ::set-output name=docker_platforms::linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386 echo ::set-output name=docker_image::bushrangers/ha-voltronic-mqtt - name: Checkout @@ -60,7 +60,7 @@ jobs: --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ - --file Dockerfile . + --file Dockerfile.multiarch . - name: Clear if: always() diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..aecf7ae --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,25 @@ +FROM debian:stretch + +RUN apt update && apt install -y \ + curl \ + git \ + build-essential \ + cmake \ + jq \ + mosquitto-clients + +ADD sources/ /opt/ +ADD config/ /etc/inverter/ + +RUN cd /opt/inverter-cli && \ + mkdir bin && cmake . && make && mv inverter_poller bin/ + +HEALTHCHECK \ + --interval=30s \ + --timeout=10s \ + --start-period=1m \ + --retries=3 \ + CMD /opt/healthcheck + +WORKDIR /opt +ENTRYPOINT ["/bin/bash", "/opt/inverter-mqtt/entrypoint.sh"] diff --git a/Dockerfile b/Dockerfile.multiarch similarity index 84% rename from Dockerfile rename to Dockerfile.multiarch index 8031483..49a1c80 100644 --- a/Dockerfile +++ b/Dockerfile.multiarch @@ -26,5 +26,12 @@ ADD config/ /etc/inverter/ RUN cd /opt/inverter-cli && \ mkdir bin && cmake . && make && mv inverter_poller bin/ +HEALTHCHECK \ + --interval=30s \ + --timeout=10s \ + --start-period=1m \ + --retries=3 \ + CMD /opt/healthcheck + WORKDIR /opt ENTRYPOINT ["/bin/bash", "/opt/inverter-mqtt/entrypoint.sh"] \ No newline at end of file diff --git a/README.md b/README.md index c0981d4..75b4e46 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ grafana-example.jpg **Docker Hub:** [`bushrangers/ha-voltronic-mqtt`](https://hub.docker.com/r/bushrangers/ha-voltronic-mqtt/) -![License](https://img.shields.io/github/license/ned-kelly/docker-voltronic-homeassistant.svg) ![Docker Pulls](https://img.shields.io/docker/pulls/bushrangers/ha-voltronic-mqtt.png) +![License](https://img.shields.io/github/license/ned-kelly/docker-voltronic-homeassistant.svg) ![Docker Pulls](https://img.shields.io/docker/pulls/bushrangers/ha-voltronic-mqtt.png) ![buildx](https://github.com/ned-kelly/docker-voltronic-homeassistant/workflows/buildx/badge.svg) ## Prerequisites @@ -64,7 +64,11 @@ docker-compose up -d ``` -_**Note:** builds on docker hub are currently for x64 -- If you have issues standing up the image on your Linux distribution (i.e. Your Raspberry Pi/ARM device) you will need to manually build the image - This can be done by uncommenting the build flag in your docker-compose.yml file._ +_**Note:**_ + + - builds on docker hub are currently for `linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386` -- If you have issues standing up the image on your Linux distribution (i.e. An old Pi/ARM device) you may need to manually build the image to support your local device architecture - This can be done by uncommenting the build flag in your docker-compose.yml file. + + - The default `docker-compose.yml` file includes Watchtower, which can be configured to auto-update this image when we push new changes to github - Please **uncomment if you wish to auto-update to the latest builds of this project**. ## Integrating into Home Assistant. diff --git a/docker-compose.yml b/docker-compose.yml index 23e3977..7d49ad3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,16 @@ -version: '2' +version: '3' services: voltronic-mqtt: - build: . - #image: bushrangers/ha-voltronic-mqtt + # We're now (finally) supporting Multi-Arch builds (via Github actions) on Docker Hub! + # image: bushrangers/ha-voltronic-mqtt + + # Uncomment if you want to build your own local version. + build: + context: . + dockerfile: Dockerfile.dev + container_name: voltronic-mqtt @@ -26,3 +32,19 @@ services: - /dev/ttyS0:/dev/ttyS0 - /dev/ttyS1:/dev/ttyS1 - /dev/ttyS2:/dev/ttyS2 + + # Used to auto-update images as we release new versions... + watchtower: + # Please see the following for configuration options: + # https://containrrr.github.io/watchtower/container-selection/ + image: containrrr/watchtower + container_name: watchtower + + restart: always + privileged: true + + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + command: --interval 500 + diff --git a/sources/healthcheck b/sources/healthcheck new file mode 100755 index 0000000..476093f --- /dev/null +++ b/sources/healthcheck @@ -0,0 +1,9 @@ +#!/bin/bash + +PROC=`ps cax | grep -E "mqtt-subscriber|mosquitto_sub|watch" | awk '{print $5}' | sort -u | wc -l` + +if [ "$PROC" -eq "3" ] ; then + exit 0 +else + exit 99 +fi \ No newline at end of file