Add local Docker runtime helper script
This commit is contained in:
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PROJECT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
IMAGE="${IMAGE:-spootyfy-hardened:local}"
|
||||||
|
CONTAINER="${CONTAINER:-jarri-spooty}"
|
||||||
|
PORT="${PORT:-3000}"
|
||||||
|
TOKEN="${SPOOTY_AUTH_TOKEN:-test-token}"
|
||||||
|
DOWNLOADS="${DOWNLOADS:-$PROJECT/test-downloads}"
|
||||||
|
CONFIG_DIR="${CONFIG_DIR:-$PROJECT/spooty-config}"
|
||||||
|
ENV_FILE="${ENV_FILE:-/etc/tokens/spotify.env}"
|
||||||
|
YT_COOKIES_FILE_HOST="${YT_COOKIES_FILE_HOST:-/etc/tokens/youtube.cookies.txt}"
|
||||||
|
YT_COOKIES_FILE_CONTAINER="${YT_COOKIES_FILE_CONTAINER:-/spooty/config/youtube.cookies.txt}"
|
||||||
|
|
||||||
|
cd "$PROJECT"
|
||||||
|
|
||||||
|
DOCKER="docker"
|
||||||
|
if ! docker ps >/dev/null 2>&1; then
|
||||||
|
DOCKER="sudo docker"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "== Docker before =="
|
||||||
|
$DOCKER ps --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}' || true
|
||||||
|
|
||||||
|
if [[ "${1:-}" == "--build" ]]; then
|
||||||
|
echo "== Building app =="
|
||||||
|
npm run build
|
||||||
|
$DOCKER build -t "$IMAGE" .
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "== Removing named container if present =="
|
||||||
|
$DOCKER rm -f "$CONTAINER" >/dev/null 2>&1 || true
|
||||||
|
|
||||||
|
echo "== Removing any container bound to host port ${PORT} =="
|
||||||
|
PORT_CONTAINERS="$($DOCKER ps --filter "publish=${PORT}" -q || true)"
|
||||||
|
if [[ -n "$PORT_CONTAINERS" ]]; then
|
||||||
|
$DOCKER rm -f $PORT_CONTAINERS
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$DOWNLOADS" "$CONFIG_DIR"
|
||||||
|
|
||||||
|
echo "== Starting Jarri Spooty =="
|
||||||
|
$DOCKER run -d \
|
||||||
|
--name "$CONTAINER" \
|
||||||
|
-p "$PORT:3000" \
|
||||||
|
--env-file "$ENV_FILE" \
|
||||||
|
-e SPOTIFY_REDIRECT_URI="http://127.0.0.1:${PORT}/api/spotify/callback" \
|
||||||
|
-e AUTH_ENABLED=true \
|
||||||
|
-e SPOOTY_AUTH_TOKEN="$TOKEN" \
|
||||||
|
-e YT_SEARCH_DELAY_MS=7000 \
|
||||||
|
-e YT_DOWNLOADS_PER_MINUTE=6 \
|
||||||
|
-e YT_DOWNLOAD_FALLBACK_ATTEMPTS=3 \
|
||||||
|
-e YT_COOKIES_FILE="$YT_COOKIES_FILE_CONTAINER" \
|
||||||
|
-v "$DOWNLOADS:/spooty/backend/downloads" \
|
||||||
|
-v "$YT_COOKIES_FILE_HOST:$YT_COOKIES_FILE_CONTAINER:ro" \
|
||||||
|
-v "$CONFIG_DIR:/spooty/backend/config" \
|
||||||
|
"$IMAGE"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "== Docker after =="
|
||||||
|
$DOCKER ps --filter "name=^/${CONTAINER}$" --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Open:"
|
||||||
|
echo "http://127.0.0.1:${PORT}/?token=${TOKEN}"
|
||||||
|
echo
|
||||||
|
echo "Logs:"
|
||||||
|
echo "$DOCKER logs -f $CONTAINER"
|
||||||
Reference in New Issue
Block a user