#============================# # ALEXBELGIUM'S DOCKERFILE # #============================# # _.------. # _.-` ('>.-`"""-. # '.--'` _'` _ .--.) # -' '-.-';` ` # ' - _.' ``'--. # '---` .-'""` # /` #=== Home Assistant Addon ===# ################# # 1 Build Image # ################# ARG BUILD_VERSION ARG BUILD_FROM ARG BUILD_UPSTREAM="latest" FROM anthonyraymond/joal:$BUILD_UPSTREAM ################## # 2 Modify Image # ################## # Set S6 wait time ENV S6_CMD_WAIT_FOR_SERVICES=1 \ S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ S6_SERVICES_GRACETIME=0 # Install Joal # spellcheck disable=SC2015 # hadolint ignore=SC2015,DL4006 RUN \ if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl); fi \ && curl -f -s -S -J -L -o /tmp/joal.tar.gz "$(curl -f -s https://api.github.com/repos/anthonyraymond/joal/releases/latest | grep -o "http.*joal.tar.gz")" >/dev/null \ && mkdir -p /data/joal \ && tar zxvf /tmp/joal.tar.gz -C /data/joal >/dev/null \ && chown -R "$(id -u)":"$(id -g)" /data/joal \ && rm /data/joal/jack-of* || true ################## # 3 Install apps # ################## # Add rootfs COPY rootfs/ / # Manual apps ENV PACKAGES="jq \ nginx" # Automatic apps & bashio ADD --chmod=744 "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_autoapps.sh" RUN /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh # Modules ARG MODULES="00-banner.sh 01-custom_script.sh" # Automatic modules download ADD --chmod=744 "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh" RUN /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh ################ # 4 Entrypoint # ################ # Add entrypoint ENV S6_STAGE2_HOOK=/ha_entrypoint.sh ADD --chmod=777 "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" # Entrypoint modifications RUN \ # Corrects permissions for s6 v3 if [ -d /etc/cont-init.d ]; then chmod -R 755 /etc/cont-init.d; fi && \ if [ -d /etc/services.d ]; then chmod -R 755 /etc/services.d; fi && \ #Correct shebang in entrypoint mkdir -p /run/s6/container_environment && \ for shebang in "/command/with-contenv bashio" "/usr/bin/env bashio" "/usr/bin/bashio" "/bin/bash" "/bin/sh"; do if [ -f "${shebang%% *}" ]; then break; fi; done; sed -i "s|/command/with-contenv bashio|$shebang|g" /ha_entrypoint.sh ENTRYPOINT [ "/usr/bin/env" ] CMD [ "/ha_entrypoint.sh" ] ############ # 5 Labels # ############ ARG BUILD_ARCH ARG BUILD_DATE ARG BUILD_DESCRIPTION ARG BUILD_NAME ARG BUILD_REF ARG BUILD_REPOSITORY ARG BUILD_VERSION LABEL \ io.hass.name="${BUILD_NAME}" \ io.hass.description="${BUILD_DESCRIPTION}" \ io.hass.arch="${BUILD_ARCH}" \ io.hass.type="addon" \ io.hass.version=${BUILD_VERSION} \ maintainer="alexbelgium (https://github.com/alexbelgium)" \ org.opencontainers.image.title="${BUILD_NAME}" \ org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ org.opencontainers.image.vendor="Home Assistant Add-ons" \ org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ org.opencontainers.image.licenses="MIT" \ org.opencontainers.image.url="https://github.com/alexbelgium" \ org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ org.opencontainers.image.created=${BUILD_DATE} \ org.opencontainers.image.revision=${BUILD_REF} \ org.opencontainers.image.version=${BUILD_VERSION} ################# # 6 Healthcheck # ################# ENV HEALTH_PORT="8081" \ HEALTH_URL="/joal/ui" HEALTHCHECK \ --interval=5s \ --retries=5 \ --start-period=30s \ --timeout=25s \ CMD curl --fail "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1