mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-01-31 17:07:42 +01:00
karakeep nobuild
This commit is contained in:
@@ -1,42 +1,20 @@
|
||||
#============================#
|
||||
# ALEXBELGIUM'S DOCKERFILE #
|
||||
#============================#
|
||||
# _.------.
|
||||
# _.-` ('>.-`"""-.
|
||||
# '.--'` _'` _ .--.)
|
||||
# -' '-.-';` `
|
||||
# ' - _.' ``'--.
|
||||
# '---` .-'""`
|
||||
# /`
|
||||
#=== Home Assistant Addon ===#
|
||||
# check=skip=SecretsUsedInArgOrEnv
|
||||
ARG BUILD_FROM=ghcr.io/karakeep-app/karakeep:0.30.0
|
||||
|
||||
#################
|
||||
# 1 Build Image #
|
||||
#################
|
||||
|
||||
ARG BUILD_FROM
|
||||
ARG BUILD_VERSION
|
||||
ARG MEILI_VERSION="v1.13.3"
|
||||
|
||||
FROM getmeili/meilisearch:${MEILI_VERSION} AS meilisearch
|
||||
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
##################
|
||||
# 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
|
||||
|
||||
# Environment variables
|
||||
ENV \
|
||||
DATA_DIR="/data" \
|
||||
DATA_DIR="/share/karakeep" \
|
||||
MEILI_DIR="/config/meili" \
|
||||
DISABLE_NEW_RELEASE_CHECK=true \
|
||||
BROWSER_WEB_URL="http://127.0.0.1:9222" \
|
||||
MEILI_ADDR="http://127.0.0.1:7700" \
|
||||
MEILI_MASTER_KEY="" \
|
||||
MEILI_MASTER_KEY="0uIHQXWthY2L2yqCWGVGu2axN+l4qcDEc+Of/7e8X7bEyZ8k" \
|
||||
MEILI_NO_ANALYTICS=true \
|
||||
XDG_CACHE_HOME="/data/cache"
|
||||
|
||||
@@ -48,147 +26,96 @@ ENV \
|
||||
MEILI_SERVER_PROVIDER=docker \
|
||||
MEILI_ENV=production
|
||||
|
||||
# Image specific modifications
|
||||
ENV \
|
||||
SERVICE_PORT=3000 \
|
||||
NGINX_PORT=8080
|
||||
|
||||
# NGINX Install
|
||||
RUN \
|
||||
apk add --no-cache \
|
||||
bash \
|
||||
openssl \
|
||||
nginx \
|
||||
&& rm -rf /etc/nginx
|
||||
|
||||
# Set shell
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
# Addon base configuration
|
||||
ARG BUILD_ARCH=amd64
|
||||
# renovate: datasource=github-releases packageName=hassio-addons/bashio
|
||||
ARG BASHIO_VERSION="v0.17.5"
|
||||
# renovate: datasource=github-releases packageName=home-assistant/tempio
|
||||
ARG TEMPIO_VERSION="2024.11.2"
|
||||
RUN \
|
||||
set -o pipefail \
|
||||
&& apk add --no-cache --virtual .build-dependencies \
|
||||
tar \
|
||||
xz \
|
||||
&& apk add --no-cache \
|
||||
libcrypto3 \
|
||||
libssl3 \
|
||||
musl-utils \
|
||||
musl \
|
||||
curl \
|
||||
jq \
|
||||
tzdata \
|
||||
\
|
||||
&& curl -J -L "https://github.com/hassio-addons/bashio/archive/${BASHIO_VERSION}.tar.gz" -o /tmp/bashio.tar.gz \
|
||||
&& mkdir /tmp/bashio \
|
||||
&& tar zxvf /tmp/bashio.tar.gz --strip 1 -C /tmp/bashio \
|
||||
\
|
||||
&& mv /tmp/bashio/lib /usr/lib/bashio \
|
||||
&& ln -s /usr/lib/bashio/bashio /usr/bin/bashio \
|
||||
\
|
||||
&& curl -L -s "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}" -o /usr/bin/tempio \
|
||||
&& chmod a+x /usr/bin/tempio \
|
||||
\
|
||||
&& apk del --no-cache --purge .build-dependencies \
|
||||
&& rm -rf /tmp/*
|
||||
|
||||
# Installs latest Chromium package.
|
||||
RUN \
|
||||
apk upgrade --no-cache --available \
|
||||
&& apk add --no-cache \
|
||||
chromium \
|
||||
chromium-swiftshader \
|
||||
ttf-freefont \
|
||||
font-noto-emoji \
|
||||
font-wqy-zenhei \
|
||||
unzip \
|
||||
chromium \
|
||||
chromium-swiftshader \
|
||||
ttf-freefont \
|
||||
font-noto-emoji \
|
||||
font-wqy-zenhei \
|
||||
&& mkdir -p /usr/src/chrome \
|
||||
&& adduser -D chrome \
|
||||
&& chown -R chrome:chrome /usr/src/chrome
|
||||
|
||||
COPY --from=meilisearch /bin/meilisearch /bin/meilitool /bin/
|
||||
|
||||
##################
|
||||
# 3 Install apps #
|
||||
##################
|
||||
COPY .common/addon-config /
|
||||
COPY .common/nginx /
|
||||
|
||||
# Add rootfs
|
||||
COPY rootfs/ /
|
||||
|
||||
RUN chmod +x /etc/s6-overlay/s6-rc.d/*/run
|
||||
ARG BUILD_VERSION \
|
||||
BUILD_DATE \
|
||||
BUILD_DESCRIPTION \
|
||||
BUILD_NAME \
|
||||
BUILD_REF \
|
||||
BUILD_REPOSITORY
|
||||
|
||||
# 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-global_var.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
|
||||
ENV PACKAGES=""
|
||||
|
||||
# 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
|
||||
|
||||
################
|
||||
# 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
|
||||
|
||||
# Standalone bashio command
|
||||
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/bashio-standalone.sh" "/.bashio-standalone.sh"
|
||||
RUN chmod 777 /.bashio-standalone.sh
|
||||
|
||||
RUN set -e; \
|
||||
extensions_dir="/usr/src/chrome/extensions"; \
|
||||
mkdir -p "${extensions_dir}"; \
|
||||
for entry in \
|
||||
"i-dont-care-about-cookies:fllaojicojecljbmefodhfapmkghcbnh" \
|
||||
"ublock-origin:cjpalhdlnbpafiamejdnhcphjbkeiagm"; do \
|
||||
name="${entry%%:*}"; \
|
||||
ext_id="${entry##*:}"; \
|
||||
curl -fsSL "https://clients2.google.com/service/update2/crx?response=redirect&prodversion=120.0&acceptformat=crx2,crx3&x=id%3D${ext_id}%26installsource%3Dondemand%26uc" \
|
||||
-o "/tmp/${name}.crx"; \
|
||||
rm -rf "${extensions_dir:?}/${name}"; \
|
||||
mkdir -p "${extensions_dir}/${name}"; \
|
||||
rc=0; \
|
||||
unzip -q "/tmp/${name}.crx" -d "${extensions_dir}/${name}" || rc=$$?; \
|
||||
if [ "$$rc" -ne 0 ] && [ "$$rc" -ne 1 ]; then \
|
||||
echo "ERROR: unzip failed for ${name} (rc=$$rc)"; \
|
||||
exit "$$rc"; \
|
||||
fi; \
|
||||
rm -f "/tmp/${name}.crx"; \
|
||||
done; \
|
||||
chown -R chrome:chrome "${extensions_dir}"
|
||||
|
||||
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
|
||||
ENV BUILD_VERSION="${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)" \
|
||||
io.hass.version="${BUILD_VERSION}" \
|
||||
maintainer="Fabio Garavini <info@fabiogaravini.dev>" \
|
||||
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.vendor="Fabio Garavini Hassio Add-ons" \
|
||||
org.opencontainers.image.authors="Fabio Garavini <info@fabiogaravini.dev>" \
|
||||
org.opencontainers.image.licenses="MIT" \
|
||||
org.opencontainers.image.url="https://github.com/alexbelgium" \
|
||||
org.opencontainers.image.url="https://github.com/fabio-garavini" \
|
||||
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 #
|
||||
#################
|
||||
|
||||
# Avoid spamming logs
|
||||
# hadolint ignore=SC2016
|
||||
RUN \
|
||||
# Handle Apache configuration
|
||||
if [ -d /etc/apache2/sites-available ]; then \
|
||||
for file in /etc/apache2/sites-*/*.conf; do \
|
||||
sed -i '/<VirtualHost/a \ \n # Match requests with the custom User-Agent "HealthCheck" \n SetEnvIf User-Agent "HealthCheck" dontlog \n # Exclude matching requests from access logs \n CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog' "$file"; \
|
||||
done; \
|
||||
fi && \
|
||||
\
|
||||
# Handle Nginx configuration
|
||||
if [ -f /etc/nginx/nginx.conf ]; then \
|
||||
awk '/http \{/{print; print "map $http_user_agent $dontlog {\n default 0;\n \"~*HealthCheck\" 1;\n}\naccess_log /var/log/nginx/access.log combined if=$dontlog;"; next}1' /etc/nginx/nginx.conf > /etc/nginx/nginx.conf.new && \
|
||||
mv /etc/nginx/nginx.conf.new /etc/nginx/nginx.conf; \
|
||||
fi
|
||||
|
||||
ENV HEALTH_PORT="3000" \
|
||||
HEALTH_URL="/api/health"
|
||||
HEALTHCHECK \
|
||||
--interval=5s \
|
||||
--retries=5 \
|
||||
--start-period=30s \
|
||||
--timeout=25s \
|
||||
CMD curl -A "HealthCheck: Docker/1.0" -s -f "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1
|
||||
|
||||
Reference in New Issue
Block a user