# syntax=docker/dockerfile:1.7
FROM rust:1.94-bookworm AS builder
WORKDIR /src
COPY Cargo.toml Cargo.lock* ./
COPY crates/crypto-core/Cargo.toml crates/crypto-core/Cargo.toml
COPY services/rendezvous/Cargo.toml services/rendezvous/Cargo.toml
RUN mkdir -p crates/crypto-core/src services/rendezvous/src \
 && printf 'pub fn placeholder() {}\n' > crates/crypto-core/src/lib.rs \
 && printf 'fn main() {}\n' > services/rendezvous/src/main.rs \
 && printf 'pub fn placeholder() {}\n' > services/rendezvous/src/lib.rs \
 && cargo build --locked --release -p p2p-rendezvous \
 && rm -rf services/rendezvous/src
COPY services/rendezvous/src /src/services/rendezvous/src
RUN CARGO_TARGET_DIR=/final-target cargo build --locked --release -p p2p-rendezvous

FROM debian:bookworm-slim
RUN apt-get update \
 && apt-get install -y --no-install-recommends ca-certificates curl openssl tini \
 && rm -rf /var/lib/apt/lists/* \
 && useradd --system --uid 10001 --home-dir /nonexistent --shell /usr/sbin/nologin p2p \
 && install -d -o p2p -g p2p -m 0700 /run/p2p
COPY --from=builder /final-target/release/p2p-rendezvous /usr/local/bin/p2p-rendezvous
COPY services/rendezvous/entrypoint.sh /usr/local/bin/p2p-entrypoint
COPY services/rendezvous/healthcheck.sh /usr/local/bin/p2p-healthcheck
RUN sed -i 's/\r$//' /usr/local/bin/p2p-entrypoint /usr/local/bin/p2p-healthcheck \
 && chmod 0555 /usr/local/bin/p2p-rendezvous /usr/local/bin/p2p-entrypoint /usr/local/bin/p2p-healthcheck \
 && chown p2p:p2p /usr/local/bin/p2p-entrypoint /usr/local/bin/p2p-healthcheck
USER p2p
EXPOSE 8443/tcp
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/p2p-entrypoint"]
