65 lines
2.5 KiB
Docker
65 lines
2.5 KiB
Docker
# 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"]
|