|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | | -./logo.sh |
| 3 | +source .env |
4 | 4 |
|
5 | | -echo "$(date)" |
| 5 | +COMPOSE_DIR=${COMPOSE_DIR} |
| 6 | +NETWORK_NAME=${NETWORK_NAME} |
| 7 | +NETWORK_SUBNET=${NETWORK_SUBNET} |
6 | 8 |
|
7 | | -COMPOSE_DIR="/home/druv/druv_setup" |
8 | 9 |
|
9 | | -cd "$COMPOSE_DIR" || { echo "Error: Could not change to directory $COMPOSE_DIR"; exit 1; } |
| 10 | +setup_environment() { |
| 11 | + if [ -x "./logo.sh" ]; then |
| 12 | + ./logo.sh |
| 13 | + else |
| 14 | + echo "Warning: logo.sh not found or not executable." |
| 15 | + fi |
10 | 16 |
|
11 | | -echo "Stopping Docker Compose services..." |
| 17 | + echo "$(date): Starting service management routine." |
12 | 18 |
|
13 | | -docker compose down |
| 19 | + if ! cd "$COMPOSE_DIR"; then |
| 20 | + echo "Error: Could not change to directory $COMPOSE_DIR" >&2 |
| 21 | + exit 1 |
| 22 | + fi |
| 23 | + echo "Switched to directory: $COMPOSE_DIR" |
| 24 | +} |
14 | 25 |
|
15 | | -sleep 5 |
| 26 | +docker_down() { |
| 27 | + echo "Stopping Docker Compose services..." |
16 | 28 |
|
17 | | -echo "Starting Docker Compose services..." |
| 29 | + if ! docker compose down --remove-orphans; then |
| 30 | + echo "Failed to stop services" >&2 |
| 31 | + exit 1 |
| 32 | + fi |
18 | 33 |
|
19 | | -if [ "$1" == "--all" ]; then |
20 | | - echo "Rebuilding all services..." |
21 | | - docker system prune -a -f |
22 | | - docker network create --subnet=172.18.0.0/24 homelab |
23 | | -fi |
| 34 | + echo "Services stopped successfully." |
| 35 | + sleep 5 |
| 36 | +} |
24 | 37 |
|
| 38 | +prune_and_network_setup() { |
| 39 | + echo "--- Full Rebuild Initiated ---" |
25 | 40 |
|
26 | | -docker compose up -d --remove-orphans --build --force-recreate |
| 41 | + echo "Pruning entire Docker system (-a -f)..." |
| 42 | + if ! docker system prune -a -f; then |
| 43 | + echo "Warning: Docker system prune failed, but continuing with service restart." >&2 |
| 44 | + fi |
27 | 45 |
|
28 | | -echo "Docker Compose services down and restarted." |
| 46 | + echo "Creating/ensuring network '$NETWORK_NAME' with subnet '$NETWORK_SUBNET'..." |
| 47 | + if ! docker network create --subnet="$NETWORK_SUBNET" "$NETWORK_NAME"; then |
| 48 | + echo "Warning: Failed to create/ensure network '$NETWORK_NAME'. Compose will use defaults." >&2 |
| 49 | + fi |
| 50 | +} |
| 51 | + |
| 52 | +docker_kill() { |
| 53 | + echo "Killing all running Docker containers..." |
| 54 | + |
| 55 | + if ! docker kill $(docker ps -q); then |
| 56 | + echo "Warning: Failed to kill some or all containers." >&2 |
| 57 | + fi |
| 58 | + |
| 59 | + echo "All running Docker containers have been killed." |
| 60 | +} |
| 61 | + |
| 62 | +docker_up() { |
| 63 | + echo "Starting Docker Compose services with rebuild and force-recreate..." |
| 64 | + |
| 65 | + if ! docker compose up -d --remove-orphans --build --force-recreate; then |
| 66 | + echo "Failed to start services" >&2 |
| 67 | + echo "Killing all running Docker containers and retrying..." |
| 68 | + docker_kill |
| 69 | + if ! docker compose up -d --remove-orphans --build --force-recreate; then |
| 70 | + echo "Retry failed: Could not start services" >&2 |
| 71 | + exit 1 |
| 72 | + fi |
| 73 | + exit 1 |
| 74 | + fi |
| 75 | + |
| 76 | + echo "Docker Compose services down and successfully restarted." |
| 77 | +} |
| 78 | + |
| 79 | + |
| 80 | + |
| 81 | +main() { |
| 82 | + setup_environment |
| 83 | + |
| 84 | + if [ "$1" == "--all" ]; then |
| 85 | + prune_and_network_setup |
| 86 | + fi |
| 87 | + |
| 88 | + docker_down |
| 89 | + |
| 90 | + docker_up |
| 91 | +} |
| 92 | + |
| 93 | + |
| 94 | +main "$@" |
0 commit comments