37 lines
1.3 KiB
Bash
Executable File
37 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Rebuild + redeploy a SINGLE compose service without touching the rest of the
|
|
# stack. The whole-stack rebuild you keep hitting happens because `web-app`
|
|
# depends_on slmm + sfm, so `compose up --build web-app` rebuilds the entire
|
|
# dependency tree. `--no-deps` is the fix: build + recreate ONLY this service.
|
|
#
|
|
# Usage:
|
|
# ./redeploy.sh # rebuild + redeploy web-app (prod-style, :8001)
|
|
# ./redeploy.sh terra-view # the dev container (:1001, bind-mounted source)
|
|
# ./redeploy.sh sfm # any single service
|
|
#
|
|
# Tip: the dev `terra-view` service bind-mounts the source, so for plain
|
|
# code/template edits you usually only need: docker compose restart terra-view
|
|
# Rebuild it only when requirements.txt or the Dockerfile changed.
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
SVC="${1:-web-app}"
|
|
|
|
if ! docker compose config --services | grep -qx "$SVC"; then
|
|
echo "✗ '$SVC' is not a service in this compose project."
|
|
echo " Available: $(docker compose config --services | paste -sd' ')"
|
|
exit 1
|
|
fi
|
|
|
|
echo "▶ Rebuilding '$SVC' (dependencies untouched)…"
|
|
docker compose build "$SVC"
|
|
|
|
echo "▶ Recreating ONLY '$SVC'…"
|
|
docker compose up -d --no-deps "$SVC"
|
|
|
|
echo
|
|
echo "✓ '$SVC' redeployed. Current state:"
|
|
docker compose ps "$SVC"
|