mirror of
				https://github.com/esphome/esphome.git
				synced 2025-11-03 00:21:56 +00: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
 |