mirror of
https://github.com/esphome/esphome.git
synced 2025-06-15 06:46:59 +02:00
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: J. Nick Koston <nick@koston.org>
87 lines
2.8 KiB
Docker
87 lines
2.8 KiB
Docker
ARG BUILD_VERSION=dev
|
|
ARG BUILD_OS=alpine
|
|
ARG BUILD_BASE_VERSION=2025.04.0
|
|
ARG BUILD_TYPE=docker
|
|
|
|
FROM ghcr.io/esphome/docker-base:${BUILD_OS}-${BUILD_BASE_VERSION} AS base-source-docker
|
|
FROM ghcr.io/esphome/docker-base:${BUILD_OS}-ha-addon-${BUILD_BASE_VERSION} AS base-source-ha-addon
|
|
|
|
ARG BUILD_TYPE
|
|
FROM base-source-${BUILD_TYPE} AS base
|
|
|
|
RUN git config --system --add safe.directory "*"
|
|
|
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
|
|
RUN pip install --no-cache-dir -U pip uv==0.6.14
|
|
|
|
COPY requirements.txt /
|
|
|
|
RUN \
|
|
uv pip install --no-cache-dir \
|
|
-r /requirements.txt
|
|
|
|
RUN \
|
|
platformio settings set enable_telemetry No \
|
|
&& platformio settings set check_platformio_interval 1000000 \
|
|
&& mkdir -p /piolibs
|
|
|
|
COPY script/platformio_install_deps.py platformio.ini /
|
|
RUN /platformio_install_deps.py /platformio.ini --libraries
|
|
|
|
ARG BUILD_VERSION
|
|
|
|
LABEL \
|
|
org.opencontainers.image.authors="The ESPHome Authors" \
|
|
org.opencontainers.image.title="ESPHome" \
|
|
org.opencontainers.image.description="ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems" \
|
|
org.opencontainers.image.url="https://esphome.io/" \
|
|
org.opencontainers.image.documentation="https://esphome.io/" \
|
|
org.opencontainers.image.source="https://github.com/esphome/esphome" \
|
|
org.opencontainers.image.licenses="ESPHome" \
|
|
org.opencontainers.image.version=${BUILD_VERSION}
|
|
|
|
|
|
# ======================= docker-type image =======================
|
|
FROM base AS base-docker
|
|
|
|
# Expose the dashboard to Docker
|
|
EXPOSE 6052
|
|
|
|
# Run healthcheck (heartbeat)
|
|
HEALTHCHECK --interval=30s --timeout=30s \
|
|
CMD curl --fail http://localhost:6052/version -A "HealthCheck" || exit 1
|
|
|
|
COPY docker/docker_entrypoint.sh /entrypoint.sh
|
|
|
|
# The directory the user should mount their configuration files to
|
|
VOLUME /config
|
|
WORKDIR /config
|
|
# Set entrypoint to esphome (via a script) so that the user doesn't have to type 'esphome'
|
|
# in every docker command twice
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
# When no arguments given, start the dashboard in the workdir
|
|
CMD ["dashboard", "/config"]
|
|
|
|
|
|
# ======================= ha-addon-type image =======================
|
|
FROM base AS base-ha-addon
|
|
|
|
# Copy root filesystem
|
|
COPY docker/ha-addon-rootfs/ /
|
|
|
|
ARG BUILD_VERSION
|
|
LABEL \
|
|
io.hass.name="ESPHome" \
|
|
io.hass.description="ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems" \
|
|
io.hass.type="addon" \
|
|
io.hass.version="${BUILD_VERSION}"
|
|
# io.hass.arch is inherited from addon-debian-base
|
|
|
|
ARG BUILD_TYPE
|
|
FROM base-${BUILD_TYPE} AS final
|
|
|
|
# Copy esphome and install
|
|
COPY . /esphome
|
|
RUN uv pip install --no-cache-dir -e /esphome
|