#!/usr/bin/env bash set -euo pipefail IMAGE="git.mchus.pro/reanimator/core" TAG="${1:-latest}" DEPLOY_DIR="/appdata/reanimator" echo "Deploy target:" echo " 1) local" echo " 2) remote (SSH)" read -rp "Choice [1/2]: " choice case "$choice" in 1) TARGET="local" ;; 2) read -rp "SSH target (login@hostname): " SSH_TARGET TARGET="ssh" ;; *) echo "Invalid choice" >&2 exit 1 ;; esac echo "==> Building and pushing $IMAGE:$TAG (linux/amd64)..." docker buildx build --platform linux/amd64 -t "$IMAGE:$TAG" --push . if [ "$TARGET" = "local" ]; then echo "==> Deploying locally..." docker pull "$IMAGE:$TAG" cd "$DEPLOY_DIR" docker compose pull docker compose up -d --remove-orphans echo "-- Status:" docker compose ps echo "==> Done." else echo "==> Deploying on $SSH_TARGET..." ssh "$SSH_TARGET" " set -euo pipefail echo '-- Pulling image...' docker pull $IMAGE:$TAG echo '-- Restarting container...' cd $DEPLOY_DIR docker compose pull docker compose up -d --remove-orphans echo '-- Status:' docker compose ps " echo "==> Done." fi