mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-07-03 03:45:45 +01:00
d251d2b124
The s6 supervision tree only waited S6_SERVICES_GRACETIME (10s) for the Supervisor service in /etc/services.d to stop before tearing down the rest of the tree, which cut graceful shutdown short well before the container's stop timeout. Now that the OS grants the Supervisor container more time to shut down, raise S6_SERVICES_GRACETIME to 415s so a long-running graceful shutdown can complete. Also set S6_KILL_GRACETIME explicitly to its default of 3000ms. It only acts as the final SIGTERM-to-SIGKILL grace at the very end of shutdown, so the default is fine, but stating it keeps both shutdown timers documented in one place. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
78 lines
2.4 KiB
Docker
78 lines
2.4 KiB
Docker
ARG BUILD_FROM=ghcr.io/home-assistant/base-python:3.14-alpine3.22-2026.05.0
|
|
FROM ${BUILD_FROM} AS supervisor-base
|
|
|
|
ENV \
|
|
S6_SERVICES_GRACETIME=415000 \
|
|
S6_KILL_GRACETIME=3000 \
|
|
SUPERVISOR_API=http://localhost \
|
|
CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1 \
|
|
UV_SYSTEM_PYTHON=true
|
|
|
|
# Install OS packages used both by build and final image
|
|
RUN \
|
|
set -x \
|
|
&& apk add --no-cache \
|
|
findutils \
|
|
eudev \
|
|
eudev-libs \
|
|
git \
|
|
libffi \
|
|
libpulse \
|
|
musl \
|
|
openssl \
|
|
yaml \
|
|
\
|
|
&& pip3 install uv==0.10.9
|
|
|
|
#############################################
|
|
# Install requirements and build Supervisor #
|
|
#############################################
|
|
|
|
FROM supervisor-base AS supervisor-build
|
|
|
|
WORKDIR /usr/src
|
|
|
|
# Install requirements
|
|
RUN \
|
|
--mount=type=bind,source=./requirements.txt,target=/usr/src/requirements.txt \
|
|
--mount=type=bind,source=./wheels,target=/usr/src/wheels \
|
|
if ls /usr/src/wheels/musllinux/* >/dev/null 2>&1; then \
|
|
LOCAL_WHEELS=/usr/src/wheels/musllinux; \
|
|
echo "Using local wheels from: $LOCAL_WHEELS"; \
|
|
else \
|
|
LOCAL_WHEELS=; \
|
|
echo "No local wheels found"; \
|
|
fi && \
|
|
uv pip install --compile-bytecode --no-cache --no-build \
|
|
-r requirements.txt \
|
|
${LOCAL_WHEELS:+--find-links $LOCAL_WHEELS}
|
|
|
|
# Install Home Assistant Supervisor
|
|
ARG BUILD_VERSION="9999.09.9.dev9999"
|
|
COPY . supervisor
|
|
RUN \
|
|
sed -i "s/^SUPERVISOR_VERSION =.*/SUPERVISOR_VERSION = \"${BUILD_VERSION}\"/g" /usr/src/supervisor/supervisor/const.py \
|
|
&& uv pip install --no-cache -e ./supervisor \
|
|
&& python3 -m compileall ./supervisor/supervisor
|
|
|
|
# Copy the rest of rootfs files
|
|
COPY rootfs /
|
|
|
|
#########################
|
|
# Final flattened image #
|
|
#########################
|
|
|
|
FROM supervisor-base
|
|
|
|
# Copy everything from the build stage as a single layer
|
|
COPY --from=supervisor-build / /
|
|
|
|
LABEL \
|
|
io.hass.type="supervisor" \
|
|
org.opencontainers.image.title="Home Assistant Supervisor" \
|
|
org.opencontainers.image.description="Container-based system for managing Home Assistant Core installation" \
|
|
org.opencontainers.image.authors="The Home Assistant Authors" \
|
|
org.opencontainers.image.url="https://www.home-assistant.io/" \
|
|
org.opencontainers.image.documentation="https://www.home-assistant.io/docs/" \
|
|
org.opencontainers.image.licenses="Apache License 2.0"
|