5 config_file="$config".yml
6 cidfile=cids/"$config".cid
7 cidbootstrap=cids/"$config"_boostrap.cid
8 image=samsaffron/discourse
9 docker_path=`which docker`
12 echo "Usage: launcher COMMAND CONFIG"
14 echo " start: Start/initialize a container"
15 echo " stop: Stop a running container"
16 echo " restart: Restart a container"
17 echo " destroy: Stop and remove a container"
18 echo " ssh: Start a bash shell in a running container"
19 echo " logs: Docker logs for container"
20 echo " bootstrap: Bootstrap a container for the config base on an image"
26 echo "Docker is not installed, make sure you are running on the 3.8 kernel"
27 echo "The best supported Docker release is Ubuntu 12.04.03 for it run the following"
29 echo "sudo apt-get update"
30 echo "sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring"
34 echo "sudo sh -c \"wget -qO- https://get.docker.io/gpg | apt-key add -\""
35 echo "sudo sh -c \"echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list\""
36 echo "sudo apt-get update"
37 echo "sudo apt-get install lxc-docker"
42 [ -z $docker_path ] && {
51 if [ ! -e $config_file ]
53 echo "Config file was not found, ensure $config_file exists"
59 exec cat $config_file | docker run -cidfile $cidbootstrap -i -a stdin -a stdout -a stderr -v `pwd`/shared:/shared samsaffron/discourse /pups/bin/pups --stdin
61 docker commit `cat $cidbootstrap` samsaffron/discourse $config
62 docker rm `cat $cidbootstrap` && rm $cidbootstrap
73 address="`docker port $cid 22`"
74 split=(${address//:/ })
75 exec ssh root@${split[0]} -p ${split[1]}
85 docker stop -t 10 `cat $cidfile`
97 docker logs `cat $cidfile`
106 echo "No cid found, creating a new container"
107 ports=`cat $config_file | docker run -rm -i -a stdout -a stdin samsaffron/discourse ruby -e "require 'yaml'; puts YAML.load(STDIN.readlines.join)['expose'].map{|p| '-p ' << p.to_s << ' '}.join"`
109 docker run -cidfile $cidfile $ports -d -v `pwd`/shared:/shared samsaffron/discourse:$config /usr/bin/runsvdir -P /etc/service
112 echo "cid found, ensuring container is started"
113 docker start `cat $cidfile`
122 echo "destroying container $cidfile"
123 docker stop -t 10 `cat $cidfile`
124 docker rm `cat $cidfile` && rm $cidfile
127 echo "nothing to destroy cidfile does not exist"