# syntax=docker/dockerfile:1.7 ARG RUST_VERSION=1.89 FROM --platform=$TARGETPLATFORM rust:${RUST_VERSION}-trixie AS builder-trixie WORKDIR /src RUN apt-get update \ && apt-get install -y --no-install-recommends build-essential pkg-config \ && rm -rf /var/lib/apt/lists/* COPY Cargo.toml Cargo.lock build.rs ./ COPY src ./src COPY web ./web COPY lang ./lang COPY presets ./presets COPY docs ./docs RUN cargo build --locked --release FROM --platform=$TARGETPLATFORM rust:${RUST_VERSION}-alpine AS builder-alpine WORKDIR /src RUN apk add --no-cache build-base pkgconfig musl-dev COPY Cargo.toml Cargo.lock build.rs ./ COPY src ./src COPY web ./web COPY lang ./lang COPY presets ./presets COPY docs ./docs RUN cargo build --locked --release FROM --platform=$TARGETPLATFORM debian:trixie-slim AS runtime-trixie ARG BUILD_VERSION=dev ARG TARGETARCH LABEL io.hass.version="${BUILD_VERSION}" \ io.hass.type="app" \ org.opencontainers.image.base.name="debian:trixie-slim" \ org.opencontainers.image.description="GREE Controller Home Assistant add-on" \ org.opencontainers.image.vendor="MateuszG" \ org.opencontainers.image.title="GREE Controller" \ org.opencontainers.image.version="${BUILD_VERSION}" \ org.opencontainers.image.architecture="${TARGETARCH}" RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates tzdata jq iproute2 \ && rm -rf /var/lib/apt/lists/* COPY --from=builder-trixie /src/target/release/gree-controller /usr/local/bin/gree-controller COPY ha-addon/run.sh /usr/local/bin/run.sh RUN chmod 0755 /usr/local/bin/run.sh /usr/local/bin/gree-controller EXPOSE 8787/tcp ENTRYPOINT ["/usr/local/bin/run.sh"] FROM --platform=$TARGETPLATFORM alpine:latest AS runtime-alpine ARG BUILD_VERSION=dev ARG TARGETARCH LABEL io.hass.version="${BUILD_VERSION}" \ io.hass.type="app" \ org.opencontainers.image.base.name="alpine:latest" \ org.opencontainers.image.description="GREE Controller Home Assistant add-on" \ org.opencontainers.image.vendor="MateuszG" \ org.opencontainers.image.title="GREE Controller" \ org.opencontainers.image.version="${BUILD_VERSION}" \ org.opencontainers.image.architecture="${TARGETARCH}" RUN apk add --no-cache ca-certificates tzdata jq iproute2 COPY --from=builder-alpine /src/target/release/gree-controller /usr/local/bin/gree-controller COPY ha-addon/run.sh /usr/local/bin/run.sh RUN chmod 0755 /usr/local/bin/run.sh /usr/local/bin/gree-controller EXPOSE 8787/tcp ENTRYPOINT ["/usr/local/bin/run.sh"]