#!/bin/bash # # Try to fix a service # # By default, the problem is "solved" the Microsoft way # (stop and start). # To do something more intelligent, create a # /federated/services//fix # script. if [ "$#" != 1 ]; then echo Usage: $0 service exit 1 fi SERVICE="$1" if /federated/bin/check ${SERVICE}; then echo "${SERVICE} doesn't seem to be broken" exit 0 fi /federated/bin/stop ${SERVICE} /federated/bin/start ${SERVICE} if /federated/bin/check ${SERVICE}; then echo "${SERVICE} was (probably) fixed by a restart" exit 0 fi if [ -e /federated/services/${SERVICE}/fix ]; then . /federated/services/${SERVICE}/fix if /federated/bin/check ${SERVICE}; then echo "${SERVICE} was (probably) fixed by the service fix script" exit 0 fi /federated/bin/stop ${SERVICE} /federated/bin/start ${SERVICE} if /federated/bin/check ${SERVICE}; then echo "${SERVICE} was (probably) fixed by restarting after running the fix script" exit 0 fi fi docker compose -f /federated/apps/${SERVICE}/docker-compose.yml down docker rm ${SERVICE} /federated/bin/stop ${SERVICE} || : /federated/bin/start ${SERVICE} if /federated/bin/check ${SERVICE}; then echo "${SERVICE} was (probably) fixed by rebuilding the container" exit 0 fi echo "${SERVICE} is still broken. Please improve the fix script." exit 1