User Tools

Site Tools


public:home_assistant-docker-no-cache
# ==========================================
# STAGE 1: Vývojové prostředí, kde vše zkompilujeme
# ==========================================
FROM ghcr.io/home-assistant/armv7-homeassistant-base:latest AS builder

# 1. Instalace závislostí včetně kompilátorů a Rustu
RUN apk add --no-cache \
    cmake build-base libffi-dev openssl-dev bzip2-dev zlib-dev \
    readline-dev sqlite-dev xz-dev wget musl-dev rust cargo \
    jpeg-dev openjpeg-dev tiff-dev freetype-dev lcms2-dev libwebp-dev


# 2. Stažení z PŘÍMÉHO odkazu a kompilace Pythonu 3.14
RUN wget https://www.python.org/ftp/python/3.14.9/Python-3.14.9.tar.xz && \
    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ů na nový Python 3.14 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. Zkopírování textových souborů závislostí
WORKDIR /tmp
COPY requirements.txt ./
COPY homeassistant/*.txt ./homeassistant/

# 5. Spuštění kompilace do specifické složky (nyní již pod Pythonem 3.14)
RUN uv pip install \
    --index-strategy unsafe-best-match \
    --target /compiled-packages \
    -r requirements.txt

LABEL \
    io.hass.type="core" \
    org.opencontainers.image.authors="The Home Assistant Authors" \
    org.opencontainers.image.description="Open-source home automation platform running on Python 3" \
    org.opencontainers.image.documentation="https://www.home-assistant.io/docs/" \
    org.opencontainers.image.licenses="Apache-2.0" \
    org.opencontainers.image.title="Home Assistant" \
    org.opencontainers.image.url="https://www.home-assistant.io/"

# Synchronize with homeassistant/core.py:async_stop
ENV \
    S6_SERVICES_GRACETIME=240000 \
    UV_SYSTEM_PYTHON=true \
    UV_NO_CACHE=true

WORKDIR /usr/src

# Home Assistant S6-Overlay
COPY rootfs /

# Add go2rtc binary
COPY --from=ghcr.io/alexxit/go2rtc:1.9.14@sha256:675c318b23c06fd862a61d262240c9a63436b4050d177ffc68a32710d9e05bae /usr/local/bin/go2rtc /bin/go2rtc

## Setup Home Assistant Core dependencies
COPY --parents requirements.txt homeassistant/package_constraints.txt homeassistant/
RUN \
    # Verify go2rtc can be executed
    go2rtc --version \
    # Install uv at the version pinned in the requirements file
    && pip3 install --no-cache-dir "uv==$(awk -F'==' '/^uv==/{print $2}' homeassistant/requirements.txt)" \
    && uv pip install \
        --no-build \
        -r homeassistant/requirements.txt

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 \
    && uv pip install \
        --no-build \
        -r homeassistant/requirements_all.txt

## Setup Home Assistant Core
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-no-cache.txt · Last modified: by lukas