Прод-деплой через Gitea-реестр: arm64-образы собираются на ПК, Pi делает pull

- docker-compose.yml: image у app и tunnel → путь реестра ${IMAGE_REGISTRY}/...:${IMAGE_TAG}
  (build: оставлен фолбэком для сборки на Pi). Тома/настройки прежние.
- scripts/build-push.sh: buildx bake под linux/arm64 + push обоих образов в реестр (запуск на ПК).
- .env.example: блок ОБРАЗЫ ПРОДА (IMAGE_REGISTRY=gitea.arseniev.info/notbigghost, IMAGE_TAG=latest).
- deploy/pi/README: запуск/обновление через docker compose pull; альтернатива — сборка на Pi;
  заметка про HTTPS-реестр / insecure-registries.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-27 00:16:04 +03:00
co-authored by Claude Opus 4.8
parent b3db5a4047
commit 1a61b05923
4 changed files with 56 additions and 8 deletions
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
# Сборка прод-образов (app + tunnel) под linux/arm64 для Raspberry Pi и пуш в реестр.
# Запускается на машине РАЗРАБОТКИ с Docker Desktop/buildx (не на Pi).
# Реестр и тег берутся из корневого .env (IMAGE_REGISTRY / IMAGE_TAG) — те же, что в
# docker-compose.yml. Перед запуском один раз залогиниться в реестр:
# docker login gitea.arseniev.info
set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$PROJECT_DIR"
# Билдер с поддержкой push разных архитектур (driver docker-container) — создаём при отсутствии.
if ! docker buildx inspect fsbuilder >/dev/null 2>&1; then
docker buildx create --name fsbuilder --driver docker-container >/dev/null
fi
# Эмуляция arm64 на x86-хосте (в Docker Desktop обычно уже стоит; команда идемпотентна).
docker run --privileged --rm tonistiigi/binfmt --install arm64 >/dev/null
echo "[build-push] Сборка app+tunnel под linux/arm64 и пуш в реестр…"
# bake читает docker-compose.yml: контексты build: и теги image: (с подстановкой из .env).
docker buildx bake -f docker-compose.yml --builder fsbuilder --set "*.platform=linux/arm64" --push
echo "[build-push] Готово. На Pi: docker compose pull && docker compose up -d"