dockerfiles/base/php-nginx/php/7.4-alpine/conf/bin/usr-bin/docker-service

90 lines
2.6 KiB
Bash

#!/usr/bin/env bash
set -o pipefail # trace ERR through pipes
set -o errtrace # trace ERR through 'time command' and other functions
set -o nounset ## set -u : exit the script if you try to use an uninitialised variable
set -o errexit ## set -e : exit the script if any statement returns a non-true return value
if [[ "$#" -le 1 ]]; then
echo "Usage: $0 <command> <service>"
exit 1
fi
SERVICE_COMMAND=$1
shift
for SERVICE in "$@"; do
RUN_FILE="/opt/docker/bin/service.d/${SERVICE}.sh"
SERVICE_FILE="/opt/docker/etc/supervisor.d/${SERVICE}.conf"
PROVISION_FILE="/opt/docker/provision/service.d/${SERVICE}.sh"
case "$SERVICE_COMMAND" in
enable)
# Run on demand installation/provisioning
if [[ -f "$PROVISION_FILE" ]]; then
echo "Running provisioning for ${SERVICE}, please wait..."
## execute scripts
. "$PROVISION_FILE"
## remove directory (one run time)
rm -f -- "$PROVISION_FILE"
fi
## Enable service
if [[ -f "$SERVICE_FILE" ]]; then
go-replace --mode=lineinfile \
-s 'autostart =' -r 'autostart = true' \
-- "$SERVICE_FILE"
else
echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})"
exit 1
fi
;;
disable)
## Disable service
if [[ -f "$SERVICE_FILE" ]]; then
go-replace --mode=lineinfile \
-s 'autostart =' -r 'autostart = false' \
-- "$SERVICE_FILE"
else
echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})"
exit 1
fi
;;
install)
# Run on demand installation/provisioning
if [[ -f "$PROVISION_FILE" ]]; then
echo "Running provisioning for ${SERVICE}, please wait..."
## execute scripts
. "$PROVISION_FILE"
## remove directory (one run time)
rm -f -- "$PROVISION_FILE"
fi
;;
run)
if [[ -f "$RUN_FILE" ]]; then
exec "$RUN_FILE"
else
echo "[ERROR] Service '${SERVICE}' not found (tried ${RUN_FILE})"
exit 1
fi
;;
stop|start|restart|status|pid|check)
service "${SERVICE}" "$SERVICE_COMMAND"
;;
*)
echo "[ERROR] $SERVICE_COMMAND is not a valid command"
exit 1
;;
esac
done