Matrix Docker Ansible eploy
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

31 строка
1.1 KiB

  1. #!/bin/bash
  2. # Find a synapse worker's PID and write it to a file so systemd can manage it as a service
  3. # example invocation:
  4. # matrix-synapse-worker-write-pid user_dir:18700 /run/matrix-synapse-worker.user_dir:18700.pid
  5. docker_api_call() { curl --silent --unix-socket /var/run/docker.sock ${@}; }
  6. TARGETCONTAINER=matrix-synapse
  7. TARGETWORKER=${1}
  8. PIDFILE=${2}
  9. # get ID list of subprocesses executed in $TARGETCONTAINER, and for each..
  10. for EXECID in $(docker_api_call http://localhost/containers/${TARGETCONTAINER}/json | jq --raw-output '.ExecIDs[]')
  11. do
  12. # fetch detailed process info
  13. EXECINFO=$(docker_api_call http://localhost/exec/${EXECID}/json)
  14. # extract config file path from last command argument
  15. WORKERCONFIGFILE=$(echo ${EXECINFO} | jq --raw-output .ProcessConfig.arguments[-1])
  16. # reconstruct worker name
  17. WORKERNAME=${WORKERCONFIGFILE#*/worker.}
  18. WORKERNAME=${WORKERNAME%.yaml}
  19. # if name matches the target worker: write out most recent PID & quit
  20. [ "${WORKERNAME}" = "${TARGETWORKER}" ] \
  21. && echo ${EXECINFO} | jq --raw-output .Pid > ${PIDFILE} \
  22. && exit 0
  23. done