fix(docker): update base image references to Docker Hub
quality / commitlint (push) Skipped
quality / changes (push) Successful in 8s
quality / openapi (push) Skipped
quality / web (push) Skipped
quality / docker-check (push) Skipped
quality / go (push) Successful in 57s
quality / bird2 (push) Successful in 15s
CD / quality (push) Successful in 1m27s
CD / publish (push) Failing after 4m13s

- Changed base image references in `docker-bake.hcl`, Dockerfiles, and `mirror-base-images.sh` from public ECR to Docker Hub to avoid 429 errors and improve reliability.
- Updated README documentation to reflect the new source for base images, clarifying the mirroring process and behavior when tags already exist.
This commit is contained in:
Denozordec
2026-08-18 18:30:22 +07:00
parent 0148d4ca37
commit f63e9b5fd0
6 changed files with 21 additions and 20 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ BuildKit кэширует `/go/pkg/mod`, `~/.cache/go-build` и pnpm store че
- `git.shx.one/<owner>/evobgp-buildcache:go-buildcache`**запись** только из `go-build-all`
- `git.shx.one/<owner>/evobgp-buildcache:web-buildcache`**запись** только из `web-build`
- `git.shx.one/<owner>/evobgp-buildcache:birdc-buildcache`**запись** только из `go-birdc`
- `git.shx.one/<owner>/evobgp-buildcache:base-*` — зеркало FROM (`mirror-base-images.sh`): только `linux/amd64`, skip если тег уже в Gitea (без повторного pull с ECR / 429). Неуспешный copy не валит CD — bake берёт public FROM для этой базы.
- `git.shx.one/<owner>/evobgp-buildcache:base-*` — зеркало FROM с **Docker Hub** (`docker.io/library/…`; distroless — `gcr.io`). Только `linux/amd64`; skip если тег уже в Gitea. Неуспешный copy не валит CD — bake берёт Docker Hub FROM для этой базы.
`pull = false` в bake: не перекачивать FROM, если слой уже в builder. Не запускайте `docker system prune -a` на runner.
+1 -1
View File
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1.7
# BIRD из репозитория Ubuntu (Noble 24.04 LTS) — актуальнее пакета Debian bookworm.
# Stage bird2-base общий с evobgp-agent (одинаковые слои на speaker-VPS).
ARG BASE_UBUNTU=public.ecr.aws/docker/library/ubuntu:noble
ARG BASE_UBUNTU=docker.io/library/ubuntu:noble
FROM ${BASE_UBUNTU} AS bird2-base
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
+5 -5
View File
@@ -39,11 +39,11 @@ variable "CACHE_REF_BIRDC" {
}
variable "BASE_GOLANG" {
default = "public.ecr.aws/docker/library/golang:1.24-alpine"
default = "docker.io/library/golang:1.24-alpine"
}
variable "BASE_DEBIAN" {
default = "public.ecr.aws/docker/library/debian:bookworm-slim"
default = "docker.io/library/debian:bookworm-slim"
}
variable "BASE_DISTROLESS" {
@@ -51,15 +51,15 @@ variable "BASE_DISTROLESS" {
}
variable "BASE_NODE" {
default = "public.ecr.aws/docker/library/node:22-alpine"
default = "docker.io/library/node:22-alpine"
}
variable "BASE_NGINX" {
default = "public.ecr.aws/docker/library/nginx:1.27-alpine"
default = "docker.io/library/nginx:1.27-alpine"
}
variable "BASE_UBUNTU" {
default = "public.ecr.aws/docker/library/ubuntu:noble"
default = "docker.io/library/ubuntu:noble"
}
function "go-cache-from" {
+2 -2
View File
@@ -1,8 +1,8 @@
# syntax=docker/dockerfile:1.7
# React + Vite статическая панель EvoBGP + nginx.
# Финальный stage `web` ожидает bake-контекст web-artifacts (= target:web-build).
ARG BASE_NODE=public.ecr.aws/docker/library/node:22-alpine
ARG BASE_NGINX=public.ecr.aws/docker/library/nginx:1.27-alpine
ARG BASE_NODE=docker.io/library/node:22-alpine
ARG BASE_NGINX=docker.io/library/nginx:1.27-alpine
FROM ${BASE_NODE} AS deps
WORKDIR /repo
+2 -2
View File
@@ -2,8 +2,8 @@
# Универсальная сборка бинарей cmd/* (ARG BIN) или всех сразу (target build-all).
# Воркеры (runtime): distroless static. api/all (runtime-birdc): debian-slim + birdc.
# CI: docker buildx bake -f deploy/docker/docker-bake.hcl
ARG BASE_GOLANG=public.ecr.aws/docker/library/golang:1.24-alpine
ARG BASE_DEBIAN=public.ecr.aws/docker/library/debian:bookworm-slim
ARG BASE_GOLANG=docker.io/library/golang:1.24-alpine
ARG BASE_DEBIAN=docker.io/library/debian:bookworm-slim
ARG BASE_DISTROLESS=gcr.io/distroless/static-debian12:nonroot
FROM ${BASE_GOLANG} AS deps
+10 -9
View File
@@ -3,9 +3,10 @@
# Требует: docker login в REGISTRY host, docker buildx.
# REGISTRY=git.shx.one/<owner> (без суффикса /evobgp-buildcache)
#
# Не ходим в public.ecr.aws, если тег уже есть в Gitea (иначе 429 Too Many Requests).
# Копируем только linux/amd64 — bake platforms совпадает, multi-arch индекс ECR не нужен.
# Шаг CD не должен падать: неуспешный copy оставляет bake на public FROM для этой базы.
# Источник library-образов — Docker Hub (docker.io), не public.ecr.aws (429 Too Many Requests).
# Если тег уже есть в Gitea — skip (без повторного pull).
# Копируем только linux/amd64 — bake platforms совпадает, multi-arch индекс не нужен.
# Шаг CD не должен падать: неуспешный copy оставляет bake на Docker Hub FROM для этой базы.
set -eu
REGISTRY="${REGISTRY:?REGISTRY required (git.shx.one/<owner>)}"
CACHE_REPO="${REGISTRY}/evobgp-buildcache"
@@ -52,19 +53,19 @@ mirror() {
printf '%s=%s\n' "$var" "$dest" >>"$tmp"
return 0
fi
echo "warn: ${dest} not mirrored — bake uses public FROM for ${var}"
echo "warn: ${dest} not mirrored — bake uses Docker Hub FROM for ${var}"
return 0
}
mirror "public.ecr.aws/docker/library/golang:1.24-alpine" "base-golang-1.24-alpine" BASE_GOLANG
mirror "docker.io/library/golang:1.24-alpine" "base-golang-1.24-alpine" BASE_GOLANG
sleep 8
mirror "public.ecr.aws/docker/library/debian:bookworm-slim" "base-debian-bookworm-slim" BASE_DEBIAN
mirror "docker.io/library/debian:bookworm-slim" "base-debian-bookworm-slim" BASE_DEBIAN
sleep 8
mirror "public.ecr.aws/docker/library/node:22-alpine" "base-node-22-alpine" BASE_NODE
mirror "docker.io/library/node:22-alpine" "base-node-22-alpine" BASE_NODE
sleep 8
mirror "public.ecr.aws/docker/library/nginx:1.27-alpine" "base-nginx-1.27-alpine" BASE_NGINX
mirror "docker.io/library/nginx:1.27-alpine" "base-nginx-1.27-alpine" BASE_NGINX
sleep 8
mirror "public.ecr.aws/docker/library/ubuntu:noble" "base-ubuntu-noble" BASE_UBUNTU
mirror "docker.io/library/ubuntu:noble" "base-ubuntu-noble" BASE_UBUNTU
sleep 8
mirror "gcr.io/distroless/static-debian12:nonroot" "base-distroless-static-debian12-nonroot" BASE_DISTROLESS