diff --git a/deploy/docker/README.md b/deploy/docker/README.md index 3a3595c..8fd11df 100644 --- a/deploy/docker/README.md +++ b/deploy/docker/README.md @@ -14,8 +14,8 @@ BuildKit кэширует `/go/pkg/mod`, `~/.cache/go-build` и pnpm store че | Образ | Runtime base | Заметка | |-------|----------------|---------| -| scheduler, ingest, render, deploy, node | `gcr.io/distroless/static-debian12:nonroot` | static Go (`CGO_ENABLED=0`), без shell | -| api, all | `debian:bookworm-slim` + `birdc` | только клиент birdc, без демона `bird` | +| scheduler, ingest, render | `gcr.io/distroless/static-debian12:nonroot` | static Go (`CGO_ENABLED=0`), без shell | +| api, all, deploy, node | `debian:bookworm-slim` + `bird` + `birdc` | `bird -p` (parse-check) и `birdc`; демон не запускается | | agent | тот же Ubuntu+bird2, что bird2 | общие слои с `evobgp-bird2` | | bird2 | Ubuntu Noble + пакет bird2 | | | web, web-all | `nginx:1.27-alpine` | `worker_processes 1` | diff --git a/deploy/docker/docker-bake.hcl b/deploy/docker/docker-bake.hcl index 3899ba9..e9bfce8 100644 --- a/deploy/docker/docker-bake.hcl +++ b/deploy/docker/docker-bake.hcl @@ -236,13 +236,13 @@ target "evobgp-render" { } target "evobgp-deploy" { - inherits = ["_go-runtime"] + inherits = ["_go-runtime-birdc"] args = { BIN = "evobgp-deploy" } tags = image-tags("evobgp-deploy") } target "evobgp-node" { - inherits = ["_go-runtime"] + inherits = ["_go-runtime-birdc"] args = { BIN = "evobgp-node" } tags = image-tags("evobgp-node") } diff --git a/deploy/docker/gobinary/Dockerfile b/deploy/docker/gobinary/Dockerfile index 8dcf9b4..a19888b 100644 --- a/deploy/docker/gobinary/Dockerfile +++ b/deploy/docker/gobinary/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1.7 # Универсальная сборка бинарей cmd/* (ARG BIN) или всех сразу (target build-all). -# Воркеры (runtime): distroless static. api/all (runtime-birdc): debian-slim + birdc. +# Воркеры (runtime): distroless static. api/all/deploy/node (runtime-birdc): debian-slim + bird + birdc. # CI: docker buildx bake -f deploy/docker/docker-bake.hcl ARG BASE_GOLANG=docker.io/library/golang:1.24-alpine ARG BASE_DEBIAN=docker.io/library/debian:bookworm-slim @@ -57,14 +57,15 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ && BIRD_VERSION="${BIRD_VERSION}" /tmp/bird-from-source.sh \ && rm -f /tmp/bird-from-source.sh -# scheduler / ingest / render / deploy / node — static Go, без shell. +# scheduler / ingest / render — static Go, без shell. FROM ${BASE_DISTROLESS} AS runtime ARG BIN=evobgp-api COPY --from=build-all /out/${BIN} /usr/local/bin/evobgp EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/evobgp"] -# api / all — birdc (readline + ncurses). Только клиент birdc, без демона bird. +# api / all / deploy / node — bird -p (parse-check) + birdc configure. +# Демон BIRD в этом контейнере не запускается; процесс bird — в образе evobgp-bird2. FROM ${BASE_DEBIAN} AS runtime-birdc RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ @@ -74,6 +75,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ && rm -rf /var/lib/apt/lists/* ARG BIN=evobgp-api COPY --from=build-all /out/${BIN} /usr/local/bin/evobgp +COPY --from=birdc /usr/local/sbin/bird /usr/local/sbin/bird COPY --from=birdc /usr/local/sbin/birdc /usr/local/sbin/birdc EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/evobgp"] diff --git a/docs/quickstart.md b/docs/quickstart.md index 540cf9c..728654c 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -39,7 +39,7 @@ docker login git.shx.one | Образ | Назначение | Страница пакета (пример) | Pull | |--------|------------|--------------------------|------| -| `evobgp-api` | HTTP API (с `birdc` в образе) | [packages/…/evobgp-api](https://git.shx.one/denozord/-/packages/container/evobgp-api/latest) | `docker pull git.shx.one/denozord/evobgp-api:latest` | +| `evobgp-api` | HTTP API (с `bird`/`birdc` в образе для parse-check) | [packages/…/evobgp-api](https://git.shx.one/denozord/-/packages/container/evobgp-api/latest) | `docker pull git.shx.one/denozord/evobgp-api:latest` | | `evobgp-all` | Монолит microVPS: API + in-process воркеры scheduler/ingest/render/deploy | [packages/…/evobgp-all](https://git.shx.one/denozord/-/packages/container/evobgp-all/latest) | `docker pull git.shx.one/denozord/evobgp-all:latest` | | `evobgp-scheduler` | Планировщик (reference) | [packages/…/evobgp-scheduler](https://git.shx.one/denozord/-/packages/container/evobgp-scheduler/latest) | `docker pull git.shx.one/denozord/evobgp-scheduler:latest` | | `evobgp-ingest` | Ingest CDN / ETag | [packages/…/evobgp-ingest](https://git.shx.one/denozord/-/packages/container/evobgp-ingest/latest) | `docker pull git.shx.one/denozord/evobgp-ingest:latest` |