[ARVADOS] created: 78691191dfa23c930a00c6d5cb6dcd4ce30b1a5e

git at public.curoverse.com git at public.curoverse.com
Mon Mar 23 17:09:15 EDT 2015


        at  78691191dfa23c930a00c6d5cb6dcd4ce30b1a5e (commit)


commit 78691191dfa23c930a00c6d5cb6dcd4ce30b1a5e
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Mar 23 17:12:55 2015 -0400

    5539: Arvados-in-Docker improvements
    * arvdock start now restarts existing containers instead of deleting them.  Use arvdock reset to delete the containers.
    * Uses docker data container for keep.
    * Prints a note about adding the nameserver to /etc/resolv.conf

diff --git a/docker/arvdock b/docker/arvdock
index ecd90c9..2107ff3 100755
--- a/docker/arvdock
+++ b/docker/arvdock
@@ -10,7 +10,7 @@ COMPUTE_COUNTER=0
 
 function usage {
     echo >&2
-    echo >&2 "usage: $0 (start|stop|restart|test) [options]"
+    echo >&2 "usage: $0 (start|stop|restart|test|reset) [options]"
     echo >&2
     echo >&2 "$0 start/stop/restart options:"
     echo >&2 "  -d[port], --doc[=port]        Documentation server (default port 9898)"
@@ -56,7 +56,7 @@ function start_container {
     fi
     if [[ "$3" != '' ]]; then
       local volume="$3"
-      args="$args -v $volume"
+      args="$args --volumes-from $volume"
     fi
     if [[ "$4" != '' ]]; then
       local link="$4"
@@ -70,12 +70,16 @@ function start_container {
       return
     fi
 
-    # Remove any existing container by this name.
-    $DOCKER rm "$name" 2>/dev/null
+    echo "Starting container: $name"
+    `$DOCKER ps --all |grep -P "$name[^/]" -q`
+    if [[ "$?" == "0" ]]; then
+        echo "  $DOCKER start $name"
+        container=`$DOCKER start $name`
+    else
+        echo "  $DOCKER run $args $image"
+        container=`$DOCKER run $args $image`
+    fi
 
-    echo "Starting container:"
-    echo "  $DOCKER run $args $image"
-    container=`$DOCKER run $args $image`
     if [ "$?" != "0" -o "$container" = "" ]; then
       echo "Unable to start container"
       exit 1
@@ -102,29 +106,13 @@ function start_container {
 
 }
 
-declare -a keep_volumes
-
-# Initialize the global `keep_volumes' array. If any keep volumes
-# already appear to exist (mounted volumes with a top-level "keep"
-# directory), use them; create temporary volumes if necessary.
-#
+# Create a Docker data volume
 function make_keep_volumes () {
-    # Mount a keep volume if we don't already have one
-    for mountpoint in $(cut -d ' ' -f 2 /proc/mounts); do
-      if [[ -d "$mountpoint/keep" && "$mountpoint" != "/" ]]; then
-        keep_volumes+=($mountpoint)
-      fi
-    done
-
-    # Create any keep volumes that do not yet exist.
-    while [ ${#keep_volumes[*]} -lt 2 ]
-    do
-        new_keep=$(mktemp -d)
-        echo >&2 "mounting 2G tmpfs keep volume in $new_keep"
-        sudo mount -t tmpfs -o size=2G tmpfs $new_keep
-        mkdir $new_keep/keep
-        keep_volumes+=($new_keep)
-    done
+    `$DOCKER ps --all |grep -P "keep_data[^/]" -q`
+    if [[ "$?" == "0" ]]; then
+      return
+    fi
+    docker create -v /keep-data --name keep_data arvados/keep
 }
 
 function do_start {
@@ -137,6 +125,7 @@ function do_start {
     local start_nameserver=false
     local start_keep=false
     local start_keepproxy=false
+    local
 
     # NOTE: This requires GNU getopt (part of the util-linux package on Debian-based distros).
     local TEMP=`getopt -o d::s::a::cw::nkpvh \
@@ -237,14 +226,24 @@ function do_start {
       if [[ "$?" != "0" ]]; then
         echo "Starting crosbymichael/skydns container..."
         $DOCKER rm "skydns" 2>/dev/null
+        echo $DOCKER run -d -p 172.17.42.1:53:53/udp --name skydns crosbymichael/skydns -nameserver 8.8.8.8:53 -domain arvados
         $DOCKER run -d -p 172.17.42.1:53:53/udp --name skydns crosbymichael/skydns -nameserver 8.8.8.8:53 -domain arvados
       fi
       $DOCKER ps | grep skydock >/dev/null
       if [[ "$?" != "0" ]]; then
         echo "Starting crosbymichael/skydock container..."
         $DOCKER rm "skydock" 2>/dev/null
+        echo $DOCKER run -d -v /var/run/docker.sock:/docker.sock --name skydock crosbymichael/skydock -ttl 30 -environment dev -s /docker.sock -domain arvados -name skydns
         $DOCKER run -d -v /var/run/docker.sock:/docker.sock --name skydock crosbymichael/skydock -ttl 30 -environment dev -s /docker.sock -domain arvados -name skydns
       fi
+
+      echo
+      echo "*****************************************************************"
+      echo "To access Arvados using command line tools on the host we recommend you add"
+      echo "the arvados nameserver to the top of your DNS configuration in /etc/resolv.conf:"
+      echo "nameserver 172.17.42.1"
+      echo "*****************************************************************"
+      echo
     fi
 
     if [[ $start_sso != false ]]
@@ -273,16 +272,12 @@ function do_start {
         # create `keep_volumes' array with a list of keep mount points
         # remove any stale metadata from those volumes before starting them
         make_keep_volumes
-        for v in ${keep_volumes[*]}
-        do
-            [ -f $v/keep/.metadata.yml ] && sudo rm $v/keep/.metadata.yml
-        done
         start_container "25107:25107" "keep_server_0" \
-            "${keep_volumes[0]}:/keep-data" \
+            "keep_data" \
             "api_server:api" \
             "arvados/keep"
         start_container "25108:25107" "keep_server_1" \
-            "${keep_volumes[1]}:/keep-data" \
+            "keep_data" \
             "api_server:api" \
             "arvados/keep"
     fi
@@ -435,6 +430,22 @@ function do_test {
     done
 }
 
+function do_reset {
+    for name in skydock skydns workbench_server shell doc_server keepproxy_server keep_server_0 keep_server_1 compute0 compute1 api_server keepproxy keep_data
+    do
+        `$DOCKER ps |grep -P "$name[^/]" -q`
+        if [[ "$?" == "0" ]]; then
+            echo "  $DOCKER stop $name"
+            $DOCKER stop $name
+        fi
+        `$DOCKER ps --all |grep -P "$name[^/]" -q`
+        if [[ "$?" == "0" ]]; then
+            echo "  $DOCKER rm $name"
+            $DOCKER rm $name
+        fi
+    done
+}
+
 if [ $# -lt 1 ]
 then
   usage
@@ -459,6 +470,11 @@ case $1 in
         shift
         do_test $@
         ;;
+    reset)
+        shift
+        do_reset $@
+        ;;
+
     *)
         usage
         exit 1
diff --git a/docker/keep/Dockerfile b/docker/keep/Dockerfile
index cd40a72..08e5175 100644
--- a/docker/keep/Dockerfile
+++ b/docker/keep/Dockerfile
@@ -8,5 +8,7 @@ ADD generated/run-keep /usr/local/bin/
 
 ADD generated/keep_signing_secret /etc/
 
+RUN mkdir /keep-data
+
 # Start keep
 CMD ["/usr/local/bin/run-keep"]
diff --git a/docker/workbench/apache2_foreground.sh b/docker/workbench/apache2_foreground.sh
index 5475ff0..1a31fb3 100755
--- a/docker/workbench/apache2_foreground.sh
+++ b/docker/workbench/apache2_foreground.sh
@@ -5,7 +5,8 @@ trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT
 
 # Override the default API server address if necessary.
 if [[ "$API_PORT_443_TCP_ADDR" != "" ]]; then
-  sed -i "s/localhost:9900/$API_PORT_443_TCP_ADDR/" /usr/src/arvados/apps/workbench/config/application.yml
+    sed -i "s/arvados_login_base: '.*'/arvados_login_base: 'https:\/\/$API_PORT_443_TCP_ADDR\/login'/" /usr/src/arvados/apps/workbench/config/application.yml
+    sed -i "s/arvados_v1_base: '.*'/arvados_v1_base: 'https:\/\/$API_PORT_443_TCP_ADDR\/arvados\/v1'/" /usr/src/arvados/apps/workbench/config/application.yml
 fi
 
 source /etc/apache2/envvars

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list