deploy: task image принимает BUILD_ID под роль app_image

- Dockerfile.deploy и AGENTS.md описывают локальную сборку образа + docker save/load
This commit is contained in:
av
2026-07-24 18:34:00 +03:00
parent 7c59682628
commit b948d08fe3
3 changed files with 11 additions and 7 deletions
+4 -3
View File
@@ -62,9 +62,10 @@ Two independent ways to ship the service:
собирает образ из `Dockerfile` (многоступенчатая сборка из исходников) и собирает образ из `Dockerfile` (многоступенчатая сборка из исходников) и
пушит в реестр; buckland тянет образ оттуда. пушит в реестр; buckland тянет образ оттуда.
2. **Локальная сборка (umbar)**`Dockerfile.deploy` упаковывает готовый 2. **Локальная сборка (umbar)**`Dockerfile.deploy` упаковывает готовый
бинарь (`task build`). Плейбук `umbar/playbook-trackers.yml` собирает бинарь бинарь (`task build`). Плейбук `umbar/playbook-trackers.yml` собирает
на control-хосте, доставляет его + `Dockerfile.deploy` на сервер и собирает **полный образ локально** на control-хосте (`task image`, роль `app_image`)
образ там (Go-тулчейн на сервере не нужен). Так же устроен `jellybit`. и доставляет его на сервер через `docker save`/`load`; `docker build` и
Go-тулчейн на сервере не нужны. Так же устроен `jellybit`.
## Architecture ## Architecture
+5 -2
View File
@@ -1,5 +1,8 @@
# Упаковка готового статического бинаря в минимальный образ — деплой на umbar # Упаковка готового статического бинаря в минимальный образ — деплой на umbar
# (см. ../umbar/playbook-trackers.yml). Бинарь собирается снаружи: # (см. ../umbar/playbook-trackers.yml). Образ собирается целиком локально на
# control-хосте через `task image` (роль app_image в umbar) и едет на сервер
# через docker save/load; docker build на сервере не выполняется. Бинарь
# собирается снаружи:
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o trackers . (task build) # CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o trackers . (task build)
# distroless/static несёт CA-сертификаты (HTTPS к источникам списков трекеров). # distroless/static несёт CA-сертификаты (HTTPS к источникам списков трекеров).
# Пользователь задаётся в compose (user: "1000:1000"). # Пользователь задаётся в compose (user: "1000:1000").
@@ -7,7 +10,7 @@
# Тома (см. compose): /config (ro, рендерится плейбуком) + /cache (пишет сам). # Тома (см. compose): /config (ro, рендерится плейбуком) + /cache (пишет сам).
# #
# Канонический Dockerfile (многоступенчатая сборка из исходников) живёт рядом и # Канонический Dockerfile (многоступенчатая сборка из исходников) живёт рядом и
# используется CI (Yandex Registry) — этот файл нужен только серверной сборке. # используется CI (Yandex Registry) — отдельный путь для реестра.
FROM gcr.io/distroless/static-debian12 FROM gcr.io/distroless/static-debian12
COPY trackers /usr/local/bin/trackers COPY trackers /usr/local/bin/trackers
+2 -2
View File
@@ -37,10 +37,10 @@ tasks:
- go mod tidy - go mod tidy
image: image:
desc: 'Docker-образ из готового бинаря (Dockerfile.deploy, как на сервере umbar)' desc: 'Docker-образ из готового бинаря (Dockerfile.deploy). Тег из $BUILD_ID (по умолчанию dev; роль app_image umbar передаёт свой)'
deps: [build] deps: [build]
cmds: cmds:
- docker build -f Dockerfile.deploy -t trackers:dev . - docker build -f Dockerfile.deploy -t {{.BINARY}}:${BUILD_ID:-dev} .
clean: clean:
desc: Удалить собранный бинарь desc: Удалить собранный бинарь