public:home_assistant-docker-merge-last-armv7-image
This is an old revision of the document!
# =========================================================================
# FÁZE 1: Builder – Zde zkompilujeme Python 3.14 a náročné C/C++ knihovny
# =========================================================================
FROM ghcr.io/home-assistant/armv7-homeassistant-base:2025.11.3 AS builder
# 1. Čisté minimum pro kompilaci samotného Pythonu 3.14 (rychle se nacachuje)
RUN apk add --no-cache \
build-base ffi-dev openssl-dev bzip2-dev zlib-dev \
readline-dev sqlite-dev xz-dev wget musl-dev
# 2. Stažení a nativní kompilace Pythonu 3.14.9
RUN wget https://python.org && \
tar -xf Python-3.14.9.tar.xz && \
cd Python-3.14.9 && \
./configure --enable-optimizations --with-ensurepip=install && \
make -j$(nproc) && \
make altinstall && \
cd .. && rm -rf Python-3.14.9*
# 3. Přesměrování výchozích příkazů a instalace uv
RUN ln -sf /usr/local/bin/python3.14 /usr/local/bin/python3 && \
ln -sf /usr/local/bin/pip3.14 /usr/local/bin/pip3 && \
pip3 install --no-cache-dir uv
# 4. Dodatečné nástroje pro kompilaci Python balíčků (NumPy, PyAV, atd.)
RUN apk add --no-cache \
cmake rust cargo samurai ccache autoconf automake \
jpeg-dev openjpeg-dev tiff-dev freetype-dev lcms2-dev libwebp-dev \
ffmpeg-dev pkgconfig
# 5. Příprava textových souborů závislostí z nejnovějšího Home Assistanta
WORKDIR /tmp
COPY requirements.txt ./
COPY homeassistant/*.txt ./homeassistant/
# 6. Kompilace NumPy 2.3+ s Meson fixem pro 32-bitový formát čísel (IEEE_DOUBLE_LE)
RUN --mount=type=cache,target=/root/.cache/uv \
echo -e "[properties]\nlongdouble_format = 'IEEE_DOUBLE_LE'" > /tmp/meson-native.ini && \
uv pip install \
--config-settings=setup-args="--native-file=/tmp/meson-native.ini" \
--config-settings=compile-args="-j$(nproc)" \
--index-strategy unsafe-best-match \
--target /compiled-packages \
-r requirements.txt && \
rm /tmp/meson-native.ini
# =========================================================================
# FÁZE 2: Finální běhové prostředí s nejnovějším Core kódem
# =========================================================================
FROM ghcr.io/home-assistant/homeassistant-base:latest
# Nastavení systémových proměnných pro uv
ENV \
S6_SERVICES_GRACETIME=240000 \
UV_SYSTEM_PYTHON=true \
UV_NO_CACHE=true
# Zkopírování zkompilovaného Pythonu 3.14 a balíčků z první fáze
COPY --from=builder /usr/local /usr/local
COPY --from=builder /compiled-packages /compiled-packages
# Přesměrování cest, aby systém viděl naše zkompilované balíčky
ENV PYTHONPATH="/compiled-packages:${PYTHONPATH}"
WORKDIR /usr/src
COPY rootfs /
COPY --from=ghcr.io/alexxit/go2rtc:1.9.14 /usr/local/bin/go2rtc /bin/go2rtc
# 7. Instalace Core závislostí bez --no-build flagu a s opravou chybějících maker pro PyAV
COPY --parents requirements.txt homeassistant/package_constraints.txt homeassistant/
RUN \
go2rtc --version \
&& pip3 install --no-cache-dir "uv==$(awk -F'==' '/^uv==/{print $2}' homeassistant/requirements.txt)" \
&& export CFLAGS="-DAVERROR_HTTP_TOO_MANY_REQUESTS=-1112362804 -DAV_FRAME_DATA_LCEVC=2" \
&& export UV_CONCURRENT_BUILDS=1 \
&& uv pip install \
--index-strategy unsafe-best-match \
-r homeassistant/requirements.txt
# 8. Instalace všech integrací (requirements_all)
COPY requirements_all.txt home_assistant_frontend-* home_assistant_intents-* homeassistant/
RUN \
if ls homeassistant/home_assistant_*.whl 1> /dev/null 2>&1; then \
uv pip install homeassistant/home_assistant_*.whl; \
fi \
&& export CFLAGS="-DAVERROR_HTTP_TOO_MANY_REQUESTS=-1112362804 -DAV_FRAME_DATA_LCEVC=2" \
&& export UV_CONCURRENT_BUILDS=1 \
&& uv pip install \
--index-strategy unsafe-best-match \
-r homeassistant/requirements_all.txt
# 9. Finální sestavení Home Assistant Core a předkompilace do .pyc
COPY --parents LICENSE* README* homeassistant/ pyproject.toml homeassistant/
RUN \
uv pip install \
-e ./homeassistant \
&& python3 -m compileall \
homeassistant/homeassistant
WORKDIR /config
public/home_assistant-docker-merge-last-armv7-image.1793435140.txt.gz · Last modified: by lukas
