50 lines
1.4 KiB
Bash
50 lines
1.4 KiB
Bash
#!/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"
|