diff --git a/dolideb/Dockerfile b/dolideb/Dockerfile index 0f6eab9..c9d2594 100644 --- a/dolideb/Dockerfile +++ b/dolideb/Dockerfile @@ -1,22 +1,129 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + ARG BUILD_FROM -FROM $BUILD_FROM +ARG BUILD_VERSION +FROM ${BUILD_FROM} -ENV LANG C.UTF-8 +################## +# 2 Modify Image # +################## -# Install DoliDeb -RUN apk add --no-cache apache2 php php-mysqli php-curl php-json php-session php-xml php-mbstring php-gd php-intl php-zip curl bash \ -&& curl -L -o dolibarr.tar.gz https://sourceforge.net/projects/dolibarr/files/latest/download && \ -if [ -f "dolibarr.tar.gz" ]; then \ - tar xzf dolibarr.tar.gz -C /var/www/localhost/htdocs/; \ - rm dolibarr.tar.gz; \ -else \ - echo "Download failed or file does not exist."; \ - exit 1; \ -fi +# Set S6 wait time +ENV S6_CMD_WAIT_FOR_SERVICES=0 \ + S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ + S6_SERVICES_GRACETIME=0 +ENV S6_READ_ONLY_ROOT=1 -# Copy the run script -COPY run.sh /run.sh -RUN chmod a+x /run.sh +# Global LSIO modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_lsio.sh" "/ha_lsio.sh" +ARG CONFIGLOCATION="/config" +RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh -CMD [ "/run.sh" ] +# Adjustments for DoliDeb (you can modify these as needed) +RUN \ + sed -i "s|contenv bash|contenv bashio|g" /etc/s6-overlay/s6-rc.d/svc-dolideb/run && \ + sed -i "1a if [[ \"\$LOCATION\" = \"null\" || -z \"\$LOCATION\" ]]; then LOCATION=/config/addons_config/\${HOSTNAME#*-}; fi" /etc/s6-overlay/s6-rc.d/svc-dolideb/run && \ + sed -i "1a LOCATION=\$(bashio::config 'data_location')" /etc/s6-overlay/s6-rc.d/svc-dolideb/run && \ + sed -i "s|/config|\$LOCATION|g" /etc/s6-overlay/s6-rc.d/svc-dolideb/run && \ + sed -i "s|/var/www/dolideb|\$LOCATION|g" /etc/s6-overlay/s6-rc.d/svc-dolideb/run + +################## +# 3 Install apps # +################## + +# Add rootfs +COPY rootfs/ / + +# Uses /bin for compatibility purposes +# hadolint ignore=DL4005 +RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ + if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi + +# Modules +ARG MODULES="00-banner.sh 01-custom_script.sh 00-local_mounts.sh 00-smb_mounts.sh" + +# Automatic modules download +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh" +RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh + +# Manual apps (replace with DoliDeb dependencies) +ENV PACKAGES="apache2 php php-mysqli php-curl php-json php-session php-xml php-mbstring php-gd php-intl php-zip curl" + +# Automatic apps & bashio +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" +RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh + +# Download and Install DoliDeb +RUN curl -L -o dolibarr.tar.gz https://sourceforge.net/projects/dolibarr/files/latest/download && \ + tar xzf dolibarr.tar.gz -C /var/www/localhost/htdocs/ && \ + rm dolibarr.tar.gz + +################ +# 4 Entrypoint # +################ + +# Add entrypoint +ENV S6_STAGE2_HOOK=/ha_entrypoint.sh +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" + +# Entrypoint modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh" +RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.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="80" \ + HEALTH_URL="/health" +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