CI / changes (push) Successful in 7s
CI / openapi (push) Has been skipped
CI / go (push) Has been skipped
CI / docker-web (push) Has been skipped
CI / docker-bird (push) Successful in 43s
CI / bird2 (push) Successful in 18s
CI / docker-go (push) Failing after 2m4s
Modified the bird build script to disable readline support, streamlining the installation process. Updated the Dockerfile to include the necessary libreadline8 package for the birdc runtime, ensuring compatibility while reducing unnecessary dependencies in the build phase.
54 lines
2.1 KiB
Docker
54 lines
2.1 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
# Универсальная сборка бинарей cmd/* (ARG BIN) или всех сразу (target build-all).
|
|
# INSTALL_BIRDC=1 — birdc из stage birdc (собирается один раз, переиспользуется api/all).
|
|
# CI: docker buildx bake -f deploy/docker/docker-bake.hcl
|
|
FROM public.ecr.aws/docker/library/golang:1.24-bookworm AS deps
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN --mount=type=cache,target=/go/pkg/mod,sharing=locked \
|
|
go mod download
|
|
|
|
FROM deps AS build-all
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/go/pkg/mod,sharing=locked \
|
|
--mount=type=cache,target=/root/.cache/go-build,sharing=locked \
|
|
set -eux; \
|
|
mkdir -p /out; \
|
|
for d in cmd/*/; do \
|
|
name="$(basename "$d")"; \
|
|
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o "/out/${name}" "./cmd/${name}"; \
|
|
done
|
|
|
|
# Один бинарь (локальная сборка); в CI — build-all + runtime.
|
|
FROM deps AS build
|
|
COPY . .
|
|
ARG BIN=evobgp-api
|
|
RUN --mount=type=cache,target=/go/pkg/mod,sharing=locked \
|
|
--mount=type=cache,target=/root/.cache/go-build,sharing=locked \
|
|
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/evobgp "./cmd/${BIN}"
|
|
|
|
FROM public.ecr.aws/docker/library/debian:bookworm-slim AS birdc
|
|
ARG BIRD_VERSION=2.14
|
|
COPY deploy/docker/bird/bird-from-source.sh /tmp/bird-from-source.sh
|
|
RUN chmod +x /tmp/bird-from-source.sh \
|
|
&& BIRD_VERSION="${BIRD_VERSION}" /tmp/bird-from-source.sh \
|
|
&& rm -f /tmp/bird-from-source.sh
|
|
|
|
FROM public.ecr.aws/docker/library/debian:bookworm-slim AS runtime-base
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM runtime-base AS runtime
|
|
ARG BIN=evobgp-api
|
|
COPY --from=build-all /out/${BIN} /usr/local/bin/evobgp
|
|
EXPOSE 8080
|
|
ENTRYPOINT ["/usr/local/bin/evobgp"]
|
|
|
|
FROM runtime AS runtime-birdc
|
|
# birdc, собранный с readline, требует libreadline8 в runtime (bookworm).
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends libreadline8 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
COPY --from=birdc /usr/local/sbin/bird /usr/local/sbin/birdc /usr/local/sbin/
|