#!/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"