Files
camera-jpg/deploy.sh
T
2026-08-22 17:11:53 +02:00

45 lines
1.4 KiB
Bash
Executable File

#!/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."