CI / changes (push) Successful in 7s
CI / openapi (push) Has been skipped
CI / go (push) Successful in 25s
CI / docker-web (push) Failing after 16s
CI / docker-bird (push) Failing after 16s
CI / bird2 (push) Successful in 16s
CI / docker-go (push) Failing after 14s
Added the BUILDX_BAKE_ENTITLEMENTS_FS environment variable set to "0" in the CI workflow to allow Docker builds to read the repository context. Updated the README to clarify this change and provide guidance on local usage for similar issues.
47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
# Docker-образы EvoBGP
|
||
|
||
## CI (Gitea Actions)
|
||
|
||
Сборка образов — **`docker buildx bake`** (`deploy/docker/docker-bake.hcl`), а не матрица из восьми отдельных `docker build`.
|
||
|
||
| Было | Стало |
|
||
|------|--------|
|
||
| 8× `go mod download` + 8× `go build` (разные BIN) | 1× download + 1× компиляция всех `cmd/*` |
|
||
| 2× сборка BIRD из исходников (api, all) | 1× stage `birdc`, копируется в runtime |
|
||
| 2× `npm ci` (web, web-all) | 1× `web-deps` + два nginx-образа |
|
||
| 8 runner'ов с checkout/login | 1 job `docker-go`, 1 job `docker-web` |
|
||
|
||
Кэш registry (переменные bake):
|
||
|
||
- `git.shts.su/<owner>/evobgp-buildcache:go-buildcache`
|
||
- `git.shts.su/<owner>/evobgp-buildcache:web-buildcache`
|
||
|
||
Локально BuildKit также кэширует `/go/pkg/mod` и `~/.cache/go-build` через `RUN --mount=type=cache`.
|
||
|
||
## Локальная сборка
|
||
|
||
Из корня репозитория:
|
||
|
||
```bash
|
||
cd deploy/docker
|
||
export REGISTRY=git.shts.su/<owner>
|
||
export IMAGE_TAG=latest
|
||
export SHORT_SHA=$(git rev-parse --short HEAD)
|
||
sh write-bake-override.sh
|
||
docker buildx bake -f docker-bake.hcl -f docker-bake.override.hcl go-images
|
||
docker buildx bake -f docker-bake.hcl -f docker-bake.override.hcl web-images
|
||
```
|
||
|
||
**CI:** на runner без `buildx bake --var` скрипт `write-bake-override.sh` генерирует `docker-bake.override.hcl`. В workflow задано `BUILDX_BAKE_ENTITLEMENTS_FS=0`, чтобы bake мог читать `context = "../.."` (корень репозитория). Локально при той же ошибке: `docker buildx bake --allow=fs.read=* …` или `export BUILDX_BAKE_ENTITLEMENTS_FS=0`.
|
||
|
||
Один образ (legacy):
|
||
|
||
```bash
|
||
docker build -f deploy/docker/gobinary/Dockerfile \
|
||
--target build-all \
|
||
--build-arg BIN=evobgp-api \
|
||
-t evobgp-api:local .
|
||
```
|
||
|
||
Runtime-образы в bake ожидают stage `build-all` (через bake contexts), не отдельный `--build-arg BIN` на старый target `build`.
|