#!/bin/bash # Build multi-platform ObsiGate Docker image set -euo pipefail # ----- Configuration ----- VERSION="1.1.0" IMAGE_NAME="obsigate" PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7,linux/386" BUILDER_NAME="obsigate-builder" # ----- Helpers ----- info() { printf '\033[1;34m[INFO]\033[0m %s\n' "$*"; } ok() { printf '\033[1;32m[OK]\033[0m %s\n' "$*"; } error() { printf '\033[1;31m[ERR]\033[0m %s\n' "$*" >&2; } # ----- Pre-flight checks ----- if ! command -v docker &>/dev/null; then error "docker introuvable. Installez Docker avant de continuer." exit 1 fi if ! docker buildx version &>/dev/null; then error "docker buildx introuvable. Mettez à jour Docker ou installez le plugin buildx." exit 1 fi info "=== ObsiGate v${VERSION} — Multi-Platform Build ===" info "Platforms : ${PLATFORMS}" # ----- Builder setup ----- docker buildx create --use --name "${BUILDER_NAME}" 2>/dev/null || true # ----- Build ----- # Note: --load only works for single platform; use --push for multi-platform registry push. # For local testing, build one platform at a time (see below). docker buildx build \ --platform "${PLATFORMS}" \ --tag "${IMAGE_NAME}:latest" \ --tag "${IMAGE_NAME}:${VERSION}" \ "$@" \ . ok "Build terminé (v${VERSION})." echo "" info "Pour un push vers un registry : $0 --push" info "Pour un test local (amd64) :" echo " docker buildx build --platform linux/amd64 --load -t ${IMAGE_NAME}:latest ." echo " docker-compose up -d"