#!/bin/bash set -e # Angepasst aus dem readin-deploy.sh (bzw. urspr. /Projekte/Logbuch/deploy.sh) # Nur linux/amd64, nativer Build auf esprimo (amd64) -> kein buildx/qemu, # eigener Dockerfile-Name (Dockerfile_sensorapi). # Ziel-Registry, per Umgebungsvariable ueberschreibbar: # REGISTRY=anderes.registry.example ./deploy.sh REGISTRY="${REGISTRY:-docker.citysensor.de}" # Zweite Registry (Gitea). Das Image wird dorthin zusaetzlich gepusht, damit es # nicht nur an einer Stelle liegt. Leersetzen schaltet den zweiten Push ab: # REGISTRY2= ./deploy.sh REGISTRY2="${REGISTRY2-gitea.fuerst-stuttgart.de/admin}" IMAGE_NAME="sensorapi" TAG="${1:-latest}" PLATFORM="linux/amd64" DOCKERFILE="Dockerfile_sensorapi" FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}" BUILD_DATE=$(date +%d.%m.%Y) echo "==========================================" echo "sensorapi Deploy Script (amd64)" echo "==========================================" echo "Registry: ${REGISTRY}" echo "Image: ${IMAGE_NAME}" echo "Tag: ${TAG}" echo "Platform: ${PLATFORM}" echo "Dockerfile: ${DOCKERFILE}" echo "Build-Datum: ${BUILD_DATE}" echo "==========================================" echo "" # Hinweis: Login wird uebersprungen, weil die Credentials fuer ${REGISTRY} # bereits in ~/.docker/config.json liegen. # Bei Bedarf manuell: docker login ${REGISTRY} echo ">>> Baue Image (nur ${PLATFORM}, nativ) ..." docker build \ --platform "${PLATFORM}" \ -f "${DOCKERFILE}" \ -t "${FULL_IMAGE}" \ . echo "" echo ">>> Pushe ${FULL_IMAGE} ..." docker push "${FULL_IMAGE}" echo "" # Falls ein anderer Tag als 'latest' gebaut wurde, zusaetzlich latest setzen+pushen if [ "${TAG}" != "latest" ]; then echo ">>> Tagge zusaetzlich als :latest ..." docker tag "${FULL_IMAGE}" "${REGISTRY}/${IMAGE_NAME}:latest" docker push "${REGISTRY}/${IMAGE_NAME}:latest" echo "" fi # Dasselbe Image zusaetzlich in die zweite Registry. Ein Fehlschlag bricht das # Skript nicht ab: in ${REGISTRY} liegt das Image dann bereits, der Stack kann # es also ziehen - die Meldung sagt nur, dass die Zweitablage fehlt. if [ -n "${REGISTRY2}" ]; then echo ">>> Pushe zusaetzlich nach ${REGISTRY2}/${IMAGE_NAME} ..." ok=true docker tag "${FULL_IMAGE}" "${REGISTRY2}/${IMAGE_NAME}:${TAG}" docker push "${REGISTRY2}/${IMAGE_NAME}:${TAG}" || ok=false if [ "${ok}" = true ] && [ "${TAG}" != "latest" ]; then docker tag "${FULL_IMAGE}" "${REGISTRY2}/${IMAGE_NAME}:latest" docker push "${REGISTRY2}/${IMAGE_NAME}:latest" || ok=false fi if [ "${ok}" != true ]; then echo "!!! Push nach ${REGISTRY2} fehlgeschlagen." echo "!!! Angemeldet? docker login ${REGISTRY2%%/*}" echo "!!! ${FULL_IMAGE} ist gepusht und einsetzbar." fi echo "" fi echo "==========================================" echo "Build + Push fertig: ${FULL_IMAGE}" echo "==========================================" echo "" echo "Danach Stack aktualisieren:" echo " cd /opt/stacks/esprimo/noisesensors && docker compose up -d sensorapi"