run.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env bash
  2. set -Eeuo pipefail
  3. dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
  4. serverImage="$1"
  5. clientImage='buildpack-deps:buster-curl'
  6. # ensure the clientImage is ready and available
  7. if ! docker image inspect "$clientImage" &> /dev/null; then
  8. docker pull "$clientImage" > /dev/null
  9. fi
  10. mongoImage='mongo:4.0'
  11. # ensure the mongoImage is ready and available
  12. if ! docker image inspect "$mongoImage" &> /dev/null; then
  13. docker pull "$mongoImage" > /dev/null
  14. fi
  15. # Create an instance of the container-under-test
  16. mongoCid="$(docker run -d "$mongoImage")"
  17. trap "docker rm -vf $mongoCid > /dev/null" EXIT
  18. cid="$(docker run -d --link "$mongoCid":mongo "$serverImage")"
  19. trap "docker rm -vf $cid $mongoCid > /dev/null" EXIT
  20. _request() {
  21. local method="$1"
  22. shift
  23. local url="${1#/}"
  24. shift
  25. docker run --rm --link "$cid":me "$clientImage" \
  26. curl -fsL -X"$method" "$@" "http://me:8081/$url"
  27. }
  28. # make sure that mongo-express is listening and ready
  29. . "$dir/../../retry.sh" '_request GET / --output /dev/null'
  30. # if we evetually got a "200 OK" response from mongo-express, it should be ~working fine!
  31. # (since it fails to even start if it can't connect to MongoDB, etc)