Merge branch '7751-mount-tmp' refs #7751
[arvados.git] / docker / mkimage-debootstrap.sh
index a078801b902811b232f0cc4107864231e66d0b7f..2ad79ef856009f647e768af1589c62a8c9bbc13a 100755 (executable)
@@ -86,13 +86,19 @@ if [ ! "$repo" ] || [ ! "$suite" ]; then
 fi
 
 # some rudimentary detection for whether we need to "sudo" our docker calls
-docker=''
-if docker version > /dev/null 2>&1; then
-       docker='docker'
-elif sudo docker version > /dev/null 2>&1; then
-       docker='sudo docker'
-elif command -v docker > /dev/null 2>&1; then
-       docker='docker'
+set +e
+docker=`which docker.io`
+if [[ "$docker" == "" ]]; then
+       docker=`which docker`
+fi
+set -e
+
+if $docker version > /dev/null 2>&1; then
+       docker="$docker"
+elif sudo $docker version > /dev/null 2>&1; then
+       docker="sudo $docker"
+elif command -v $docker > /dev/null 2>&1; then
+       docker="$docker"
 else
        echo >&2 "warning: either docker isn't installed, or your current user cannot run it;"
        echo >&2 "         this script is not likely to work as expected"
@@ -112,7 +118,7 @@ fi
 # will be filled in later, if [ -z "$skipDetection" ]
 lsbDist=''
 
-target="/tmp/docker-rootfs-debootstrap-$suite-$$-$RANDOM"
+target="${TMPDIR:-/tmp}/docker-rootfs-debootstrap-$suite-$$-$RANDOM"
 
 cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
 returnTo="$(pwd -P)"
@@ -195,32 +201,33 @@ else
        sudo tar --numeric-owner -c . | $docker import - $repo:$suite
        
        # test the image
-       $docker run -i -t $repo:$suite echo success
+       [[ "$(/usr/bin/tty || true)" != "not a tty" ]] && RUN_OPTS="-i -t"
+       $docker run $RUN_OPS $repo:$suite echo success
        
        if [ -z "$skipDetection" ]; then
                case "$lsbDist" in
                        Debian)
                                if [ "$suite" = "$debianStable" -o "$suite" = 'stable' ] && [ -r etc/debian_version ]; then
                                        # tag latest
-                                       $docker tag $repo:$suite $repo:latest
+                                       $docker tag -f $repo:$suite $repo:latest
                                        
                                        if [ -r etc/debian_version ]; then
                                                # tag the specific debian release version (which is only reasonable to tag on debian stable)
                                                ver=$(cat etc/debian_version)
-                                               $docker tag $repo:$suite $repo:$ver
+                                               $docker tag -f $repo:$suite $repo:$ver
                                        fi
                                fi
                                ;;
                        Ubuntu)
                                if [ "$suite" = "$ubuntuLatestLTS" ]; then
                                        # tag latest
-                                       $docker tag $repo:$suite $repo:latest
+                                       $docker tag -f $repo:$suite $repo:latest
                                fi
                                if [ -r etc/lsb-release ]; then
                                        lsbRelease="$(. etc/lsb-release && echo "$DISTRIB_RELEASE")"
                                        if [ "$lsbRelease" ]; then
                                                # tag specific Ubuntu version number, if available (12.04, etc.)
-                                               $docker tag $repo:$suite $repo:$lsbRelease
+                                               $docker tag -f $repo:$suite $repo:$lsbRelease
                                        fi
                                fi
                                ;;