[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