docker-service 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env bash
  2. set -o pipefail # trace ERR through pipes
  3. set -o errtrace # trace ERR through 'time command' and other functions
  4. set -o nounset ## set -u : exit the script if you try to use an uninitialised variable
  5. set -o errexit ## set -e : exit the script if any statement returns a non-true return value
  6. if [[ "$#" -le 1 ]]; then
  7. echo "Usage: $0 <command> <service>"
  8. exit 1
  9. fi
  10. SERVICE_COMMAND=$1
  11. shift
  12. for SERVICE in "$@"; do
  13. RUN_FILE="/opt/docker/bin/service.d/${SERVICE}.sh"
  14. SERVICE_FILE="/opt/docker/etc/supervisor.d/${SERVICE}.conf"
  15. PROVISION_FILE="/opt/docker/provision/service.d/${SERVICE}.sh"
  16. case "$SERVICE_COMMAND" in
  17. enable)
  18. # Run on demand installation/provisioning
  19. if [[ -f "$PROVISION_FILE" ]]; then
  20. echo "Running provisioning for ${SERVICE}, please wait..."
  21. ## execute scripts
  22. . "$PROVISION_FILE"
  23. ## remove directory (one run time)
  24. rm -f -- "$PROVISION_FILE"
  25. fi
  26. ## Enable service
  27. if [[ -f "$SERVICE_FILE" ]]; then
  28. go-replace --mode=lineinfile \
  29. -s 'autostart =' -r 'autostart = true' \
  30. -- "$SERVICE_FILE"
  31. else
  32. echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})"
  33. exit 1
  34. fi
  35. ;;
  36. disable)
  37. ## Disable service
  38. if [[ -f "$SERVICE_FILE" ]]; then
  39. go-replace --mode=lineinfile \
  40. -s 'autostart =' -r 'autostart = false' \
  41. -- "$SERVICE_FILE"
  42. else
  43. echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})"
  44. exit 1
  45. fi
  46. ;;
  47. install)
  48. # Run on demand installation/provisioning
  49. if [[ -f "$PROVISION_FILE" ]]; then
  50. echo "Running provisioning for ${SERVICE}, please wait..."
  51. ## execute scripts
  52. . "$PROVISION_FILE"
  53. ## remove directory (one run time)
  54. rm -f -- "$PROVISION_FILE"
  55. fi
  56. ;;
  57. run)
  58. if [[ -f "$RUN_FILE" ]]; then
  59. exec "$RUN_FILE"
  60. else
  61. echo "[ERROR] Service '${SERVICE}' not found (tried ${RUN_FILE})"
  62. exit 1
  63. fi
  64. ;;
  65. stop|start|restart|status|pid|check)
  66. service "${SERVICE}" "$SERVICE_COMMAND"
  67. ;;
  68. *)
  69. echo "[ERROR] $SERVICE_COMMAND is not a valid command"
  70. exit 1
  71. ;;
  72. esac
  73. done