# ---------- 1. fáze: překlad ----------
FROM golang:1.26-alpine AS build
WORKDIR /src

# Nejdřív jen go.mod (a případně go.sum) – tato vrstva se cachuje,
# takže při změně zdrojáků se závislosti nestahují znovu.
COPY go.mod ./
RUN go mod download

COPY *.go ./
RUN CGO_ENABLED=0 go build -o /pdsnode .

# ---------- 2. fáze: výsledný obraz ----------
# alpine (ne scratch), abychom měli v kontejneru shell a nástroje
# (sh, nc, ping, wget) pro ladění přes `docker exec`.
FROM alpine:3.22

COPY --from=build /pdsnode /usr/local/bin/pdsnode

# Adresáře pro logy a perzistentní stav (sem se připojí volumes)
RUN mkdir -p /logs /state

ENV LISTEN=":5000" LOG_DIR="/logs" STATE_DIR="/state" MAX_DELAY_MS="0"
# Dokumentace: kontejner poslouchá na portu 5000 (port to sám neotevírá ven!)
EXPOSE 5000

ENTRYPOINT ["pdsnode"]
