# Универсальная сборка бинаря из 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"]