Guest User

Untitled

a guest
Nov 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # Variables
  4. NGINX_NETWORK_NAME="nginx-proxy"
  5. NGINX_PROXY_NAME="nginx-proxy"
  6. NGINX_PROXY_IMAGE="jwilder/nginx-proxy:alpine"
  7. NGINX_LETSENCRYPT_NAME="nginx-letsencrypt"
  8. NGINX_LETSENCRYPT_IMAGE="jrcs/letsencrypt-nginx-proxy-companion:latest"
  9. NGINX_DATA_PATH="/srv/docker/nginx"
  10.  
  11. # Prepare mounts
  12. mkdir -p \
  13. "${NGINX_DATA_PATH}" \
  14. "${NGINX_DATA_PATH}/ssl/certificates" \
  15. "${NGINX_DATA_PATH}/vhost.d"
  16. touch "${NGINX_DATA_PATH}/proxy.conf"
  17.  
  18. echo "Updating images..."
  19. if docker pull "${NGINX_PROXY_IMAGE}"
  20. then IMAGE_LATEST[0]="$(docker image inspect --format "{{.Id}}" "${NGINX_PROXY_IMAGE}")"
  21. fi
  22.  
  23. if docker pull "${NGINX_LETSENCRYPT_IMAGE}"
  24. then IMAGE_LATEST[1]="$(docker image inspect --format "{{.Id}}" "${NGINX_LETSENCRYPT_IMAGE}")"
  25. fi
  26.  
  27. echo -n "Creating a virtual network... "
  28. docker network create "${NGINX_NETWORK_NAME}" 2>/dev/null \
  29. || echo "virtual network ${NGINX_NETWORK_NAME} already exists"
  30.  
  31. echo "Checking running containers' images"
  32. if docker ps -f "name=${NGINX_PROXY_NAME}" --format "{{.Names}}" | grep -q "${NGINX_PROXY_NAME}"
  33. then IMAGE_RUNNING[0]="$(docker container inspect --format "{{.Image}}" "${NGINX_PROXY_NAME}")"
  34. fi
  35.  
  36. if docker ps -f "name=${NGINX_LETSENCRYPT_NAME}" --format "{{.Names}}" | grep -q "${NGINX_LETSENCRYPT_NAME}"
  37. then IMAGE_RUNNING[1]="$(docker container inspect --format "{{.Image}}" "${NGINX_LETSENCRYPT_NAME}")"
  38. fi
  39.  
  40. # Compare downloaded image's and running image's digests
  41. # If they don't match, recreate the containers
  42. if [ "${IMAGE_RUNNING[0]}" != "${IMAGE_LATEST[0]}" ] # nginx-proxy
  43. then
  44. docker stop "${NGINX_PROXY_NAME}" 2>/dev/null || true
  45. docker rm "${NGINX_PROXY_NAME}" 2>/dev/null || true
  46. echo -n "Creating container ${NGINX_PROXY_NAME}... "
  47. docker run \
  48. --detach \
  49. --interactive \
  50. --tty \
  51. --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true \
  52. --publish 80:80 \
  53. --publish 443:443 \
  54. --restart unless-stopped \
  55. --volume "${NGINX_DATA_PATH}/ssl/certificates:/etc/nginx/certs:ro" \
  56. --volume "${NGINX_DATA_PATH}/vhost.d:/etc/nginx/vhost.d" \
  57. --volume "${NGINX_DATA_PATH}/proxy.conf:/etc/nginx/conf.d/proxy.conf:ro" \
  58. --volume nginx-html:/usr/share/nginx/html \
  59. --volume /var/run/docker.sock:/tmp/docker.sock:ro \
  60. --network "${NGINX_NETWORK_NAME}" \
  61. --name "${NGINX_PROXY_NAME}" \
  62. "${NGINX_PROXY_IMAGE}" || { echo "Error creating ${NGINX_PROXY_NAME}!"; exit 1; }
  63. else
  64. echo "Container ${NGINX_PROXY_NAME} is up to date"
  65. fi
  66.  
  67. if [ "${IMAGE_RUNNING[1]}" != "${IMAGE_LATEST[1]}" ] # nginx-letsencrypt
  68. then
  69. docker stop "${NGINX_LETSENCRYPT_NAME}" 2>/dev/null || true
  70. docker rm "${NGINX_LETSENCRYPT_NAME}" 2>/dev/null || true
  71. echo -n "Creating container ${NGINX_LETSENCRYPT_NAME}... "
  72. docker run \
  73. --detach \
  74. --interactive \
  75. --tty \
  76. --restart unless-stopped \
  77. --volume "${NGINX_DATA_PATH}/ssl/certificates:/etc/nginx/certs" \
  78. --volume "${NGINX_DATA_PATH}/vhost.d:/etc/nginx/vhost.d" \
  79. --volume nginx-html:/usr/share/nginx/html \
  80. --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  81. --network "${NGINX_NETWORK_NAME}" \
  82. --name "${NGINX_LETSENCRYPT_NAME}" \
  83. "${NGINX_LETSENCRYPT_IMAGE}" || { echo "Error creating ${NGINX_LETSENCRYPT_NAME}!"; exit 1; }
  84. else
  85. echo "Container ${NGINX_LETSENCRYPT_NAME} is up to date"
  86. fi
  87.  
  88. unset IMAGE_LATEST IMAGE_RUNNING
Add Comment
Please, Sign In to add comment