FEATURE: add support for boot_command and run_image
authorSam <sam.saffron@gmail.com>
Fri, 22 Jan 2016 08:28:49 +0000 (19:28 +1100)
committerSam <sam.saffron@gmail.com>
Fri, 22 Jan 2016 08:28:49 +0000 (19:28 +1100)
These changes allow launcher to easily run arbitrary images

launcher

index 585864e04b8769326e84ed38681b55f14d25e802..c3ee3a423389777cef5e7c958a518c8edaa42325 100755 (executable)
--- a/launcher
+++ b/launcher
@@ -8,7 +8,7 @@ opt=$3
 re='[A-Z/ !@#$%^&*()+~`=]'
 if [[ $config =~ $re ]];
   then
-    echo 
+    echo
     echo "ERROR: Config name must not contain upper case characters, spaces or special characters. Correct config name and rerun $0."
     echo
     exit 1
@@ -25,6 +25,7 @@ local_discourse=local_discourse
 image=discourse/discourse:1.0.15
 docker_path=`which docker.io || which docker`
 
+
 if [ "${SUPERVISED}" = "true" ]; then
   restart_policy="--restart=no"
   attach_on_start="-a"
@@ -420,6 +421,30 @@ run_stop(){
   fi
 }
 
+set_run_image() {
+  run_image=`cat $config_file | $docker_path run $user_args --rm -i -a stdin -a stdout $image ruby -e \
+    "require 'yaml'; puts YAML.load(STDIN.readlines.join)['run_image']"`
+
+  if [ -z "$run_image" ]; then
+    run_image="$local_discourse/$config"
+  fi
+}
+
+set_boot_command() {
+  boot_command=`cat $config_file | $docker_path run $user_args --rm -i -a stdin -a stdout $image ruby -e \
+    "require 'yaml'; puts YAML.load(STDIN.readlines.join)['boot_command']"`
+
+  if [ -z "$boot_command" ]; then
+
+    no_boot_command=`cat $config_file | $docker_path run $user_args --rm -i -a stdin -a stdout $image ruby -e \
+      "require 'yaml'; puts YAML.load(STDIN.readlines.join)['no_boot_command']"`
+
+    if [ -z "$no_boot_command" ]; then
+      boot_command="/sbin/boot"
+    fi
+  fi
+}
+
 run_start(){
 
    existing=`$docker_path ps | awk '{ print $1, $(NF) }' | grep " $config$" | awk '{ print $1 }'`
@@ -451,13 +476,14 @@ run_start(){
    set_template_info
    set_volumes
    set_links
+   set_run_image
+   set_boot_command
 
    (
      hostname=`hostname`
      set -x
      $docker_path run $user_args $links $attach_on_run $restart_policy "${env[@]}" -h "$hostname-$config" \
-        -e DOCKER_HOST_IP=$docker_ip --name $config -t $ports $volumes $docker_args $local_discourse/$config \
-        /sbin/boot
+        -e DOCKER_HOST_IP=$docker_ip --name $config -t $ports $volumes $docker_args $run_image $boot_command
 
    )
    exit 0
@@ -517,6 +543,8 @@ run_bootstrap(){
   $docker_path rm `cat $cidbootstrap` && rm $cidbootstrap
 }
 
+
+
 case "$command" in
   bootstrap)
       run_bootstrap