mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-08-17 18:37:19 +02:00
158 lines
5.2 KiB
Docker
158 lines
5.2 KiB
Docker
#============================#
|
|
# ALEXBELGIUM'S DOCKERFILE #
|
|
#============================#
|
|
#=== Home Assistant Addon ===#
|
|
|
|
#################
|
|
# 1 Build Image #
|
|
#################
|
|
|
|
ARG BUILD_FROM
|
|
ARG BUILD_VERSION
|
|
|
|
FROM rust:bookworm AS rtk-builder
|
|
RUN set -eux; \
|
|
rtk_version="$(git ls-remote --tags --refs --sort=-v:refname \
|
|
https://github.com/rtk-ai/rtk.git 'refs/tags/v*' \
|
|
| awk -F/ '$3 ~ /^v[0-9]+\.[0-9]+\.[0-9]+$/ { print $3; exit }')"; \
|
|
test -n "$rtk_version"; \
|
|
git clone --depth 1 --branch "$rtk_version" https://github.com/rtk-ai/rtk.git /src/rtk; \
|
|
cd /src/rtk; \
|
|
cargo build --release --locked; \
|
|
install -D -m 0755 target/release/rtk /out/rtk; \
|
|
/out/rtk --version
|
|
|
|
FROM ${BUILD_FROM}
|
|
|
|
##################
|
|
# 2 Modify Image #
|
|
##################
|
|
|
|
ENV S6_CMD_WAIT_FOR_SERVICES=1 \
|
|
S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \
|
|
S6_SERVICES_GRACETIME=0 \
|
|
HEADROOM_CONTEXT_TOOL=rtk
|
|
|
|
USER root
|
|
VOLUME [ "/sys/fs/cgroup" ]
|
|
|
|
ARG TEMPLATE_BASE_URL="https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates"
|
|
|
|
##################
|
|
# 3 Install apps #
|
|
##################
|
|
|
|
COPY rootfs/ /
|
|
RUN find /etc/cont-init.d /etc/s6-overlay /usr/local/bin \
|
|
-type f \( -name "*.sh" -o -name "run" -o -name "finish" -o -path "/usr/local/bin/*" \) \
|
|
-print -exec chmod +x {} \;
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
git \
|
|
gh \
|
|
jq \
|
|
less \
|
|
nano \
|
|
openssh-client \
|
|
python3-pip \
|
|
ripgrep \
|
|
tmux && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install the latest stable official Codex static binary for the target architecture.
|
|
RUN set -eux; \
|
|
case "$(dpkg --print-architecture)" in \
|
|
amd64) codex_arch="x86_64" ;; \
|
|
arm64) codex_arch="aarch64" ;; \
|
|
*) echo "Unsupported architecture: $(dpkg --print-architecture)" >&2; exit 1 ;; \
|
|
esac; \
|
|
archive="/tmp/codex.tar.gz"; \
|
|
curl -fsSL --retry 3 --retry-delay 2 \
|
|
-o "$archive" \
|
|
"https://github.com/openai/codex/releases/latest/download/codex-${codex_arch}-unknown-linux-musl.tar.gz"; \
|
|
tar -xzf "$archive" -C /tmp; \
|
|
install -m 0755 "/tmp/codex-${codex_arch}-unknown-linux-musl" /usr/local/bin/codex; \
|
|
rm -f "$archive" "/tmp/codex-${codex_arch}-unknown-linux-musl"; \
|
|
codex --version
|
|
|
|
# Install the latest stable ttyd binary for the Home Assistant ingress terminal.
|
|
RUN set -eux; \
|
|
case "$(dpkg --print-architecture)" in \
|
|
amd64) ttyd_arch="x86_64" ;; \
|
|
arm64) ttyd_arch="aarch64" ;; \
|
|
*) echo "Unsupported architecture: $(dpkg --print-architecture)" >&2; exit 1 ;; \
|
|
esac; \
|
|
curl -fsSL --retry 3 --retry-delay 2 \
|
|
-o /usr/local/bin/ttyd \
|
|
"https://github.com/tsl0922/ttyd/releases/latest/download/ttyd.${ttyd_arch}"; \
|
|
chmod 0755 /usr/local/bin/ttyd; \
|
|
ttyd --version
|
|
|
|
COPY --from=rtk-builder /out/rtk /usr/local/bin/rtk
|
|
RUN rtk --version && \
|
|
pip3 install --upgrade --break-system-packages --no-cache-dir "headroom-ai[proxy,code,mcp]" && \
|
|
headroom --version
|
|
|
|
ARG MODULES="00-banner.sh 00-global_var.sh 01-custom_script.sh 00-local_mounts.sh 00-smb_mounts.sh 90-dns_set.sh"
|
|
RUN curl -fsSL --retry 3 --retry-delay 2 \
|
|
-o /ha_automodules.sh "${TEMPLATE_BASE_URL}/ha_automodules.sh" && \
|
|
chmod 744 /ha_automodules.sh && \
|
|
/ha_automodules.sh "$MODULES" && \
|
|
rm /ha_automodules.sh
|
|
|
|
################
|
|
# 4 Entrypoint #
|
|
################
|
|
|
|
RUN curl -fsSL --retry 3 --retry-delay 2 \
|
|
-o /ha_entrypoint.sh "${TEMPLATE_BASE_URL}/ha_entrypoint.sh" && \
|
|
curl -fsSL --retry 3 --retry-delay 2 \
|
|
-o /usr/local/lib/bashio-standalone.sh "${TEMPLATE_BASE_URL}/bashio-standalone.sh" && \
|
|
chmod 0777 /ha_entrypoint.sh && \
|
|
chmod 0755 /usr/local/lib/bashio-standalone.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
|
|
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)" \
|
|
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/master/chatgpt_codex/README.md" \
|
|
org.opencontainers.image.created=${BUILD_DATE} \
|
|
org.opencontainers.image.revision=${BUILD_REF} \
|
|
org.opencontainers.image.version=${BUILD_VERSION}
|
|
|
|
#################
|
|
# 6 Healthcheck #
|
|
#################
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s \
|
|
CMD curl -fsS http://127.0.0.1:7681/ > /dev/null || exit 1
|