diff --git a/contrib/docker-integration/install_certs.sh b/contrib/docker-integration/install_certs.sh index a23d8bee..c1fa2b20 100644 --- a/contrib/docker-integration/install_certs.sh +++ b/contrib/docker-integration/install_certs.sh @@ -1,10 +1,6 @@ #!/bin/sh set -e -# Set IP address in /etc/hosts for localregistry -IP=$(ifconfig eth0|grep "inet addr:"| cut -d: -f2 | awk '{ print $1}') -echo "$IP localregistry" >> /etc/hosts - hostname=$1 if [ "$hostname" = "" ]; then hostname="localhost" diff --git a/contrib/docker-integration/run.sh b/contrib/docker-integration/run.sh index 707dfa18..87dfa630 100755 --- a/contrib/docker-integration/run.sh +++ b/contrib/docker-integration/run.sh @@ -2,19 +2,13 @@ set -e set -x -source helpers.bash - cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" -# Port used by engine under test -ENGINE_PORT=5216 +source helpers.bash # Root directory of Distribution DISTRIBUTION_ROOT=$(cd ../..; pwd -P) -DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-overlay} -EXEC_DRIVER=${EXEC_DRIVER:-native} - volumeMount="" if [ "$DOCKER_VOLUME" != "" ]; then volumeMount="-v ${DOCKER_VOLUME}:/var/lib/docker" @@ -41,17 +35,19 @@ TESTS=${@:-.} docker pull $INTEGRATION_IMAGE # Start a Docker engine inside a docker container -ID=$(docker run -d -it -p $ENGINE_PORT:$ENGINE_PORT --privileged $volumeMount $dockerMount \ +ID=$(docker run -d -it --privileged $volumeMount $dockerMount \ -v ${DISTRIBUTION_ROOT}:/go/src/github.com/docker/distribution \ - -e "ENGINE_PORT=$ENGINE_PORT" \ -e "DOCKER_GRAPHDRIVER=$DOCKER_GRAPHDRIVER" \ -e "EXEC_DRIVER=$EXEC_DRIVER" \ ${INTEGRATION_IMAGE} \ ./run_engine.sh) +# Stop container on exit +trap "docker rm -f -v $ID" EXIT + # Wait for it to become reachable. tries=10 -until "$DOCKER_BINARY" -H "127.0.0.1:$ENGINE_PORT" version &> /dev/null; do +until docker exec "$ID" docker version &> /dev/null; do (( tries-- )) if [ $tries -le 0 ]; then echo >&2 "error: daemon failed to start" @@ -60,21 +56,20 @@ until "$DOCKER_BINARY" -H "127.0.0.1:$ENGINE_PORT" version &> /dev/null; do sleep 1 done -# Make sure we have images outside the container, to transfer to the container. -# Not much will happen here if the images are already present. -docker-compose pull -docker-compose build +# If no volume is specified, transfer images into the container from +# the outer docker instance +if [ "$DOCKER_VOLUME" == "" ]; then + # Make sure we have images outside the container, to transfer to the container. + # Not much will happen here if the images are already present. + docker-compose pull + docker-compose build -# Transfer images to the inner container. -for image in "$INTEGRATION_IMAGE" registry:0.9.1 dockerintegration_nginx dockerintegration_registryv2; do - docker save "$image" | "$DOCKER_BINARY" -H "127.0.0.1:$ENGINE_PORT" load -done - -#DOCKER_HOST="tcp://127.0.0.1:$ENGINE_PORT" docker-compose pull -#DOCKER_HOST="tcp://127.0.0.1:$ENGINE_PORT" docker-compose build + # Transfer images to the inner container. + for image in "$INTEGRATION_IMAGE" registry:0.9.1 dockerintegration_nginx dockerintegration_registryv2; do + docker save "$image" | docker exec -i "$ID" docker load + done +fi # Run the tests. -docker exec -it "$ID" sh -c "DOCKER_HOST=tcp://127.0.0.1:$ENGINE_PORT ./test_runner.sh $TESTS" +docker exec -it "$ID" sh -c "./test_runner.sh $TESTS" -# Stop container -docker rm -f -v "$ID" diff --git a/contrib/docker-integration/run_engine.sh b/contrib/docker-integration/run_engine.sh index 9c59aa26..4a7b94e0 100755 --- a/contrib/docker-integration/run_engine.sh +++ b/contrib/docker-integration/run_engine.sh @@ -2,11 +2,14 @@ set -e set -x +DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-overlay} +EXEC_DRIVER=${EXEC_DRIVER:-native} + # Set IP address in /etc/hosts for localregistry IP=$(ifconfig eth0|grep "inet addr:"| cut -d: -f2 | awk '{ print $1}') echo "$IP localregistry" >> /etc/hosts sh install_certs.sh localregistry -docker --daemon -H "0.0.0.0:$ENGINE_PORT" --log-level=panic \ +docker --daemon --log-level=panic \ --storage-driver="$DOCKER_GRAPHDRIVER" --exec-driver="$EXEC_DRIVER"