Refactored and updated run.sh:
[arvados.git] / docker / run.sh
1 #!/bin/bash
2
3 if [[ "$ENABLE_SSH" != "" ]]; then
4   EXTRA=" -e ENABLE_SSH=$ENABLE_SSH"
5 else
6   EXTRA=''
7 fi
8
9 function ip_address {
10   local container=$1
11   echo `docker inspect $container  |grep IPAddress |cut -f4 -d\"`
12 }
13
14 function start_container {
15   local port="-p $1"
16   if [[ "$2" != '' ]]; then
17     local name="-name $2"
18   fi
19   if [[ "$3" != '' ]]; then
20     local volume="-v $3"
21   fi
22   if [[ "$4" != '' ]]; then
23     local link="-link $4"
24   fi
25   local image=$5
26
27   `docker ps |grep -P "$2[^/]" -q`
28   if [[ "$?" == "0" ]]; then
29     echo "You have a running container with name $2 -- skipping."
30     return
31   fi
32
33   echo "Starting container:"
34   echo "  docker run -d -i -t$EXTRA $port $name $volume $link $image"
35   container=`docker run -d -i -t$EXTRA $port $name $volume $link $image`
36   if [[ "$?" != "0" ]]; then
37     echo "Unable to start container"
38     exit 1
39   fi
40   if [[ $EXTRA ]]; then
41     ip=$(ip_address $container )
42     echo
43     echo "You can ssh into the container with:"
44     echo
45     echo "    ssh root@$ip"
46     echo
47   fi
48 }
49
50 function make_keep_volume {
51   # Mount a keep volume if we don't already have one
52   local keepvolume=""
53   for mountpoint in $(cut -d ' ' -f 2 /proc/mounts); do
54     if [[ -d "$mountpoint/keep" && "$mountpoint" != "/" ]]; then
55       keepvolume=$mountpoint
56     fi
57   done
58
59   if [[ "$keepvolume" == '' ]]; then
60     keepvolume=$(mktemp -d)
61     echo "mounting 512M tmpfs keep volume in $keepvolume"
62     sudo mount -t tmpfs -o size=512M tmpfs $keepvolume
63     mkdir $keepvolume/keep
64   fi
65   echo "$keepvolume"
66 }
67
68 start_container "9898:80" "doc_server" '' '' "arvados/doc"
69 start_container "9901:443" "sso_server" '' '' "arvados/sso"
70 start_container "9900:443" "api_server" '' "sso_server:sso" "arvados/api"
71 start_container "9899:80" "workbench_server" '' "api_server:api" "arvados/workbench"
72
73 keepvolume=$(make_keep_volume)
74 start_container "25107:25107" "keep_server_0" "$keepvolume:/dev/keep-0" '' "arvados/warehouse"
75 start_container "25108:25107" "keep_server_1" "$keepvolume:/dev/keep-0" '' "arvados/warehouse"