#!/bin/bash # Deploy Script für weather2oag # Baut das Docker Image und lädt es zu docker.citysensor.de hoch set -e # Konfiguration REGISTRY="docker.citysensor.de" IMAGE_NAME="wetter-report" TAG="${TAG:-$(date +%Y%m%d%H%M)}" # default Datum # Build-Datum und Version aus pyproject.toml BUILD_DATE=$(date +%d.%m.%Y) VERSION=$(grep '^version' pyproject.toml | sed 's/version = "\(.*\)"/\1/') echo "==========================================" echo " Deploy Script" echo "==========================================" echo "Registry: ${REGISTRY}" echo "Image: ${IMAGE_NAME}" echo "Version: ${VERSION}" echo "Tag: ${TAG}" echo "Build-Datum: ${BUILD_DATE}" echo "==========================================" echo "" # 1. Login zur Registry (falls noch nicht eingeloggt) echo ">>> Login zu ${REGISTRY}..." docker login "${REGISTRY}" echo "" # 2. Multiplatform Builder einrichten (docker-container driver erforderlich) echo ">>> Richte Multiplatform Builder ein..." if ! docker buildx inspect multiplatform-builder &>/dev/null; then docker buildx create --name multiplatform-builder --driver docker-container --bootstrap fi docker buildx use multiplatform-builder echo "" FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}" echo "==========================================" echo ">>> Baue ${IMAGE_NAME}..." echo ">>> Image: ${FULL_IMAGE}" echo "==========================================" # 3. Docker Image bauen und pushen (Multiplatform) docker buildx build \ --platform linux/amd64,linux/arm64 \ --build-arg BUILD_DATE="${BUILD_DATE}" \ --build-arg VERSION="${VERSION}" \ -t "${FULL_IMAGE}" \ --push \ . # 4. Tagge auch als :${VERSION} und :latest echo ">>> Tagge als :${VERSION} und :latest..." docker buildx imagetools create \ -t "${REGISTRY}/${IMAGE_NAME}:${VERSION}" \ -t "${REGISTRY}/${IMAGE_NAME}:latest" \ "${FULL_IMAGE}" echo "✓ ${IMAGE_NAME} erfolgreich gebaut und gepusht!" echo "" echo "==========================================" echo "✓ Deploy erfolgreich abgeschlossen!" echo "==========================================" echo "Registry: ${REGISTRY}" echo "Image: ${IMAGE_NAME}" echo "Version: ${VERSION}" echo "Tag: ${TAG}" echo "" echo "Auf dem Server ausführen:" echo " docker compose pull" echo " docker compose run --rm ${IMAGE_NAME}" echo ""