Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. #!/bin/bash
  2. set -e
  3.  
  4. systemctl stop mirrors
  5. systemctl restart docker
  6. systemctl stop nginx 2>/dev/null || true
  7.  
  8. docker stop $(docker ps -aq) > /dev/null || true
  9. pkill mysqld || true
  10. pkill php-fpm7 || true
  11. pkill nginx || true
  12. sleep 5
  13. pidof mysqld && echo "Can't kill mysqld process, kill it by hands and restart script!" && exit 1
  14. pidof php-fpm7 && echo "Can't kill php-fpm7 process, kill it by hands and restart script!" && exit 1
  15. pidof nginx && echo "Can't kill nginx process, kill it by hands and restart script!" && exit 1
  16.  
  17. docker rm -f "clone-wp-db" > /dev/null 2>&1 || true
  18. insp=( $(docker inspect wp-db -f '{{.Image}} {{(index .Mounts 0).Name}}') )
  19. db_image=${insp[0]}
  20. db_volume=${insp[1]}
  21. printf "\n---\nClone db container: wb-db\n"
  22. docker create \
  23. --name "clone-wp-db" \
  24. --label "wp-role=db" \
  25. --volume "$db_volume:/var/lib/mysql" \
  26. "$db_image"
  27.  
  28. cids=$(docker ps -a --filter 'name=^/wp-domain-[0-9]+$' --format '{{.Names}}')
  29. for cid in $cids; do
  30. printf "\n---\nClone domain container: $cid\n"
  31. insp=( $(docker inspect $cid -f '{{index .Config.Labels "wp-domain-id"}} {{index .Config.Labels "wp-domain-name"}} {{.Image}} {{(index .Mounts 0).Name}}') )
  32. domain_id=${insp[0]}
  33. domain_name=${insp[1]}
  34. image=${insp[2]}
  35. volume=${insp[3]}
  36. nw_name="wp-nw-domain-$domain_id"
  37. ct_name="clone-wp-domain-$domain_id"
  38. echo "Domain_name: $domain_name"
  39.  
  40. if ! docker network inspect "$nw_name" > /dev/null 2>&1; then
  41. echo "Create network $nw_name"
  42. docker network create \
  43. --label "wp-role=domain-db-bridge" \
  44. --label "wp-domain-id=$domain_id" \
  45. --label "wp-domain-name=$domain_name" \
  46. "$nw_name"
  47. fi
  48.  
  49. echo "Connect network $nw_name to db container"
  50. docker network connect --alias "db" "$nw_name" "clone-wp-db"
  51.  
  52. echo "Create domain cointainer: $ct_name"
  53. docker rm -f "$ct_name" > /dev/null 2>&1 || true
  54. docker create \
  55. --name "$ct_name" \
  56. -P \
  57. --network "$nw_name" \
  58. --volume "$volume:/var/www/html" \
  59. --label "wp-role=wp" \
  60. --label "wp-domain-id=$domain_id" \
  61. --label "wp-domain-name=$domain_name" \
  62. "$image"
  63. done
  64.  
  65. printf "\n---\nReplace db container: clone-wp-db -> wb-db\n"
  66. docker rm -f "wp-db"
  67. docker rename "clone-wp-db" "wp-db"
  68. docker start "wp-db"
  69. sleep 2
  70.  
  71. for cid in $cids; do
  72. ct_name="clone-$cid"
  73. printf "\n---\nReplace domain container: $ct_name -> $cid\n"
  74. docker rm -f "$cid"
  75. docker rename "$ct_name" "$cid"
  76. docker start "$cid"
  77. done
  78.  
  79. systemctl start mirrors
  80. if [ -f /etc/nginx/metrics.htpasswd ]; then
  81. systemctl start nginx
  82. else
  83. true # do nothing
  84. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement