#!/usr/bin/env bash # Build doorbell-resizer locally and load it on the Portainer host over SSH. set -euo pipefail ROOT="$(cd "$(dirname "$0")" && pwd)" IMAGE="${IMAGE:-doorbell-resizer:latest}" HOST="${HOST:-10.0.1.195}" USER="${USER_REMOTE:-arne}" # Override with: SSH_PASSWORD='...' ./deploy.sh PASSWORD="${SSH_PASSWORD:-}" REMOTE_TAR="${REMOTE_TAR:-/tmp/doorbell-resizer.tar.gz}" LOCAL_TAR="${LOCAL_TAR:-/tmp/doorbell-resizer.tar.gz}" if [[ -z "${PASSWORD}" ]]; then echo "Set SSH_PASSWORD (e.g. SSH_PASSWORD='yourpass' ./deploy.sh)" >&2 exit 1 fi if ! command -v sshpass >/dev/null 2>&1; then echo "sshpass is required. On macOS: brew install esolitos/ipa/sshpass" >&2 exit 1 fi export SSHPASS="${PASSWORD}" SSH_OPTS=(-o StrictHostKeyChecking=accept-new -o PreferredAuthentications=password -o PubkeyAuthentication=no) cd "$ROOT" echo "==> Building ${IMAGE}" docker build -t "${IMAGE}" . echo "==> Saving ${IMAGE} -> ${LOCAL_TAR}" docker save "${IMAGE}" | gzip > "${LOCAL_TAR}" echo "==> Copying to ${USER}@${HOST}:${REMOTE_TAR}" sshpass -e scp "${SSH_OPTS[@]}" "${LOCAL_TAR}" "${USER}@${HOST}:${REMOTE_TAR}" echo "==> Loading image on ${HOST}" sshpass -e ssh "${SSH_OPTS[@]}" "${USER}@${HOST}" \ "gunzip -c '${REMOTE_TAR}' | docker load && rm -f '${REMOTE_TAR}'" rm -f "${LOCAL_TAR}" echo "==> Done. Image ${IMAGE} is on ${HOST}." echo " In Portainer: update/recreate the stack (or restart the container) to pick up latest."