run.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/bash
  2. #
  3. # Run docker-compose in a container
  4. #
  5. # This script will attempt to mirror the host paths by using volumes for the
  6. # following paths:
  7. # * $(pwd)
  8. # * $(dirname $COMPOSE_FILE) if it's set
  9. # * $HOME if it's set
  10. #
  11. # You can add additional volumes (or any docker run options) using
  12. # the $COMPOSE_OPTIONS environment variable.
  13. #
  14. set -e
  15. VERSION="1.6.1"
  16. IMAGE="docker/compose:$VERSION"
  17. # Setup options for connecting to docker host
  18. if [ -z "$DOCKER_HOST" ]; then
  19. DOCKER_HOST="/var/run/docker.sock"
  20. fi
  21. if [ -S "$DOCKER_HOST" ]; then
  22. DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
  23. else
  24. DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
  25. fi
  26. # Setup volume mounts for compose config and context
  27. if [ "$(pwd)" != '/' ]; then
  28. VOLUMES="-v $(pwd):$(pwd)"
  29. fi
  30. if [ -n "$COMPOSE_FILE" ]; then
  31. compose_dir=$(dirname $COMPOSE_FILE)
  32. fi
  33. # TODO: also check --file argument
  34. if [ -n "$compose_dir" ]; then
  35. VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
  36. fi
  37. if [ -n "$HOME" ]; then
  38. VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
  39. fi
  40. # Only allocate tty if we detect one
  41. if [ -t 1 ]; then
  42. DOCKER_RUN_OPTIONS="-t"
  43. fi
  44. if [ -t 0 ]; then
  45. DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
  46. fi
  47. exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"