FROM rust:1.94-slim AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config libssl-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /build
# Cache dependencies
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && echo 'fn main() {}' > src/main.rs && echo '' > src/lib.rs \
&& cargo build --release \
&& rm -rf src
# Build actual source
COPY src/ src/
RUN touch src/main.rs src/lib.rs && cargo build --release
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/echoip
COPY --from=builder /build/target/release/echoip ./echoip
COPY html/ html/
RUN mkdir -p /opt/echoip/data
VOLUME ["/opt/echoip/data"]
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1
ENTRYPOINT ["/opt/echoip/echoip"]