38 lines
760 B
Bash
Executable File
38 lines
760 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
log() {
|
|
printf '[redeploy] %s\n' "$*"
|
|
}
|
|
|
|
if [[ ! -d .git ]]; then
|
|
printf '[redeploy] ERROR: run this script from the repository root.\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
OLD_COMPOSE_FILE="$(mktemp)"
|
|
|
|
cleanup() {
|
|
if [[ -f "$OLD_COMPOSE_FILE" ]]; then
|
|
rm -f "$OLD_COMPOSE_FILE"
|
|
fi
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
log 'Capturing current compose configuration'
|
|
docker compose config > "$OLD_COMPOSE_FILE"
|
|
|
|
log 'Pulling latest git changes'
|
|
git pull
|
|
|
|
log 'Building updated images while current stack is running'
|
|
docker compose build --no-cache
|
|
|
|
log 'Stopping previous stack using captured configuration'
|
|
docker compose --project-directory "$PWD" -f "$OLD_COMPOSE_FILE" down
|
|
|
|
log 'Starting stack'
|
|
docker compose up -d
|
|
|
|
log 'Redeploy complete'
|