Add interactive publish script

This commit is contained in:
2025-10-15 21:47:44 +02:00
parent d8e917348c
commit 94f0a80ac8

46
scripts/publish-image.sh Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
DOCKER_CONTEXT="${PROJECT_ROOT}/kirby"
DOCKERFILE_PATH="${DOCKER_CONTEXT}/Dockerfile"
REGISTRY_HOST="gitea.mindboost.team"
IMAGE_NAME="interkollektives/lichterei-web"
DEFAULT_TAG="0.0.1"
if ! command -v docker >/dev/null 2>&1; then
echo "Docker is required but not found in PATH." >&2
exit 1
fi
read -rp "Image tag [${DEFAULT_TAG}]: " INPUT_TAG
IMAGE_TAG="${INPUT_TAG:-$DEFAULT_TAG}"
IMAGE_REF="${REGISTRY_HOST}/${IMAGE_NAME}:${IMAGE_TAG}"
read -rp "Registry username: " REGISTRY_USER
read -rsp "Registry password or token: " REGISTRY_PASSWORD
echo
echo "Building image ${IMAGE_REF} ..."
docker build \
--file "${DOCKERFILE_PATH}" \
--tag "${IMAGE_REF}" \
"${DOCKER_CONTEXT}"
echo "Logging into ${REGISTRY_HOST} ..."
echo "${REGISTRY_PASSWORD}" | docker login "${REGISTRY_HOST}" \
--username "${REGISTRY_USER}" \
--password-stdin
cleanup() {
docker logout "${REGISTRY_HOST}" >/dev/null 2>&1 || true
}
trap cleanup EXIT
echo "Pushing ${IMAGE_REF} ..."
docker push "${IMAGE_REF}"
echo "Image pushed successfully."