@@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
HOST="${BTCDATA_DEPLOY_HOST:-citadel}"
|
|
||||||
APP_DIR="${BTCDATA_DEPLOY_DIR:-/home/pmp/apps/btcdata}"
|
|
||||||
IMAGE_NAME="${BTCDATA_IMAGE_NAME:-$(basename "$APP_DIR")-btcdata:latest}"
|
|
||||||
PLATFORM="${BTCDATA_PLATFORM:-}"
|
|
||||||
NETWORK="${BTCDATA_NETWORK:-btc-network}"
|
|
||||||
FILES=(docker-compose.yml .env)
|
|
||||||
|
|
||||||
if [[ -z "$PLATFORM" ]]; then
|
|
||||||
remote_arch="$(ssh "$HOST" uname -m)"
|
|
||||||
case "$remote_arch" in
|
|
||||||
x86_64 | amd64) PLATFORM="linux/amd64" ;;
|
|
||||||
aarch64 | arm64) PLATFORM="linux/arm64" ;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported target architecture: $remote_arch" >&2
|
|
||||||
echo "Set BTCDATA_PLATFORM manually, e.g. BTCDATA_PLATFORM=linux/amd64" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
for file in "${FILES[@]}"; do
|
|
||||||
if [[ ! -f "$file" ]]; then
|
|
||||||
echo "Missing required file: $file" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Building $IMAGE_NAME locally for $PLATFORM..."
|
|
||||||
docker build --platform "$PLATFORM" -t "$IMAGE_NAME" .
|
|
||||||
|
|
||||||
echo "Preparing $APP_DIR on $HOST..."
|
|
||||||
ssh "$HOST" "mkdir -p '$APP_DIR'"
|
|
||||||
|
|
||||||
echo "Ensuring external network $NETWORK exists on $HOST..."
|
|
||||||
ssh "$HOST" "docker network inspect '$NETWORK' >/dev/null 2>&1 || docker network create '$NETWORK'"
|
|
||||||
|
|
||||||
echo "Copying docker-compose.yml and .env to $HOST:$APP_DIR..."
|
|
||||||
scp "${FILES[@]}" "$HOST:$APP_DIR/"
|
|
||||||
|
|
||||||
echo "Copying Docker image $IMAGE_NAME to $HOST..."
|
|
||||||
docker save "$IMAGE_NAME" | ssh "$HOST" docker load
|
|
||||||
|
|
||||||
echo "Starting docker compose on $HOST in $APP_DIR..."
|
|
||||||
ssh "$HOST" "cd '$APP_DIR' && docker compose up -d --no-build"
|
|
||||||
Reference in New Issue
Block a user