# Универсальная сборка бинаря из cmd/* (ARG BIN=evobgp-api | evobgp-all).
# INSTALL_BIRDC=1 собирает BIRD 2.14 из исходников (birdc) для EVOBGP_BIRDC_SOCKET; иначе пакет Debian не используется.
# Базовые образы из ECR Public (официальное зеркало library/*), чтобы CI не зависел от auth.docker.io.
# Отдельный stage для кэша модулей (CI: один раз --target deps, затем параллельные сборки с cache-from).
FROM public.ecr.aws/docker/library/golang:1.24-bookworm AS deps
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download

FROM deps AS build
COPY . .
ARG BIN=evobgp-api
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/evobgp ./cmd/${BIN}

FROM public.ecr.aws/docker/library/debian:bookworm-slim
ARG INSTALL_BIRDC=0
ARG BIRD_VERSION=2.14
COPY deploy/docker/bird/bird-from-source.sh /tmp/bird-from-source.sh
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates \
  && if [ "$INSTALL_BIRDC" = "1" ]; then \
    chmod +x /tmp/bird-from-source.sh \
    && BIRD_VERSION="${BIRD_VERSION}" /tmp/bird-from-source.sh \
    && rm -f /tmp/bird-from-source.sh; \
  else \
    rm -f /tmp/bird-from-source.sh; \
  fi \
  && rm -rf /var/lib/apt/lists/*
COPY --from=build /out/evobgp /usr/local/bin/evobgp
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/evobgp"]
