Files
laermsensor-stack/readin/deploy.sh
T
2026-08-05 12:33:17 +00:00

91 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
set -e
# Angepasst aus /Projekte/Logbuch/deploy.sh
# Unterschiede: nur linux/amd64, nativer Build auf esprimo (amd64) -> kein buildx/qemu,
# eigener Dockerfile-Name (Dockerfile_readin).
# Build-Kontext ist das Repository-Wurzelverzeichnis, weil readin und
# readarchive sich die Module unter common/ teilen.
# 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="readin"
TAG="${1:-latest}"
PLATFORM="linux/amd64"
DOCKERFILE="readin/Dockerfile_readin"
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}"
BUILD_DATE=$(date +%d.%m.%Y)
# ins Repository-Wurzelverzeichnis wechseln (eine Ebene ueber diesem Skript)
cd "$(dirname "$0")/.."
echo "=========================================="
echo "readin Deploy Script (amd64)"
echo "=========================================="
echo "Registry: ${REGISTRY}"
echo "Image: ${IMAGE_NAME}"
echo "Tag: ${TAG}"
echo "Platform: ${PLATFORM}"
echo "Dockerfile: ${DOCKERFILE}"
echo "Kontext: $(pwd)"
echo "Build-Datum: ${BUILD_DATE}"
echo "=========================================="
echo ""
# Hinweis: Login wird uebersprungen, weil die Credentials fuer ${REGISTRY}
# bereits in ~/.docker/config.json liegen (Container laufen bereits aus dieser Registry).
# 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 readin"