cidbootstrap=cids/"$config"_boostrap.cid
local_discourse=local_discourse
image=samsaffron/discourse:0.2.0
-docker_path=`which docker`
+docker_path=`which docker.io || which docker`
docker_ip=`/sbin/ifconfig | \
grep -B1 "inet addr" | \
prereqs() {
# 1. docker daemon running?
- test=`docker info >/dev/null`
+ test=`$docker_path info >/dev/null`
if [[ $? -ne 0 ]] ; then
echo "Cannot connect to the docker daemon - verify it is running and you have access"
fi
# 2. running aufs
- test=`docker info 2> /dev/null | grep 'Driver: aufs'`
+ test=`$docker_path info 2> /dev/null | grep 'Driver: aufs'`
if [[ "$test" =~ "aufs" ]] ; then : ; else
echo "Your Docker installation is not using aufs"
echo "Device mapper and other experimental drivers are unstable"
fi
# 3. running docker 0.10+
- test=`docker --version | grep 0.10`
+ test=`$docker_path --version | grep 0.10`
if [[ "$test" =~ "0.10" ]] ; then : ; else
echo "Your Docker installation is old, please upgrade to 0.10.0 or up"
fi
# 4. able to attach stderr / out / tty
- test=`docker run -i --rm -a stdout -a stderr $image echo working`
+ test=`$docker_path run -i --rm -a stdout -a stderr $image echo working`
if [[ "$test" =~ "working" ]] ; then : ; else
echo "Your Docker installation is not working correctly"
echo
}
set_volumes() {
- volumes=`cat $config_file | docker run --rm -i -a stdout -a stdin $image ruby -e \
+ volumes=`cat $config_file | $docker_path run --rm -i -a stdout -a stdin $image ruby -e \
"require 'yaml'; puts YAML.load(STDIN.readlines.join)['volumes'].map{|v| '-v ' << v['volume']['host'] << ':' << v['volume']['guest'] << ' '}.join"`
}
set_template_info() {
- templates=`cat $config_file | docker run --rm -i -a stdin -a stdout $image ruby -e \
+ templates=`cat $config_file | $docker_path run --rm -i -a stdin -a stdout $image ruby -e \
"require 'yaml'; puts YAML.load(STDIN.readlines.join)['templates']"`
puts env.map{|k,v| "-e\n#{k}=#{v}" }.join("\n")
RUBY
- raw=`exec echo "$input" | docker run --rm -i -a stdin -a stdout $image ruby -e "$env_ruby"`
+ raw=`exec echo "$input" | $docker_path run --rm -i -a stdin -a stdout $image ruby -e "$env_ruby"`
env=()
while read i; do
echo "No cid found"
exit 1
else
- docker stop -t 10 `cat $cidfile`
+ $docker_path stop -t 10 `cat $cidfile`
fi
}
if [ ! -e $cidfile ]
then
echo "No cid found, creating a new container"
- ports=`cat $config_file | docker run --rm -i -a stdout -a stdin $image ruby -e \
+ ports=`cat $config_file | $docker_path run --rm -i -a stdout -a stdin $image ruby -e \
"require 'yaml'; puts YAML.load(STDIN.readlines.join)['expose'].map{|p| '-p ' << p.to_s << ' '}.join"`
set_template_info
set_volumes
- existing=`docker ps -a | awk '{ print $1, $(NF) }' | grep "$config$" | awk '{ print $1 }'`
+ existing=`$docker_path ps -a | awk '{ print $1, $(NF) }' | grep "$config$" | awk '{ print $1 }'`
if [ ! -z $existing ]
then
echo "Found an existing container by its name, recovering cidfile, please rerun"
exit 1
fi
- docker run "${env[@]}" -h "`hostname`-$config" -e DOCKER_HOST_IP=$docker_ip --name $config -t --cidfile $cidfile $ports \
+ $docker_path run "${env[@]}" -h "`hostname`-$config" -e DOCKER_HOST_IP=$docker_ip --name $config -t --cidfile $cidfile $ports \
-d $volumes $local_discourse/$config /usr/bin/runsvdir -P /etc/service
exit 0
exit 1
fi
- found=`docker ps -q -a --no-trunc | grep $cid`
+ found=`$docker_path ps -q -a --no-trunc | grep $cid`
if [ -z $found ]
then
echo "Invalid cid file, deleting, please re-run"
fi
echo "cid found, ensuring container is started"
- docker start `cat $cidfile`
+ $docker_path start `cat $cidfile`
exit 0
fi
# Is the image available?
# If not, pull it here so the user is aware what's happening.
- docker history $image >/dev/null 2>&1 || docker pull $image
+ $docker_path history $image >/dev/null 2>&1 || $docker_path pull $image
set_template_info
- base_image=`cat $config_file | docker run --rm -i -a stdin -a stdout $image ruby -e \
+ base_image=`cat $config_file | $docker_path run --rm -i -a stdin -a stdout $image ruby -e \
"require 'yaml'; puts YAML.load(STDIN.readlines.join)['base_image']"`
- update_pups=`cat $config_file | docker run --rm -i -a stdin -a stdout $image ruby -e \
+ update_pups=`cat $config_file | $docker_path run --rm -i -a stdin -a stdout $image ruby -e \
"require 'yaml'; puts YAML.load(STDIN.readlines.join)['update_pups']"`
if [[ ! X"" = X"$base_image" ]]; then
env=("${env[@]}" "-e" "SSH_PUB_KEY=$ssh_pub_key")
- (exec echo "$input" | docker run "${env[@]}" -e DOCKER_HOST_IP=$docker_ip --cidfile $cidbootstrap -i -a stdin -a stdout -a stderr $volumes $image \
+ (exec echo "$input" | $docker_path run "${env[@]}" -e DOCKER_HOST_IP=$docker_ip --cidfile $cidbootstrap -i -a stdin -a stdout -a stderr $volumes $image \
/bin/bash -c "$run_command") \
- || (docker rm `cat $cidbootstrap` && rm $cidbootstrap)
+ || ($docker_path rm `cat $cidbootstrap` && rm $cidbootstrap)
[ ! -e $cidbootstrap ] && echo "FAILED TO BOOTSTRAP" && exit 1
sleep 5
- docker commit `cat $cidbootstrap` $local_discourse/$config || echo 'FAILED TO COMMIT'
- docker rm `cat $cidbootstrap` && rm $cidbootstrap
+ $docker_path commit `cat $cidbootstrap` $local_discourse/$config || echo 'FAILED TO COMMIT'
+ $docker_path rm `cat $cidbootstrap` && rm $cidbootstrap
}
case "$command" in
exit 1
else
cid="`cat $cidfile`"
- address="`docker port $cid 22`"
+ address="`$docker_path port $cid 22`"
split=(${address//:/ })
exec ssh -o StrictHostKeyChecking=no root@${split[0]} -p ${split[1]}
fi
echo "No cid found"
exit 1
else
- docker logs `cat $cidfile`
+ $docker_path logs `cat $cidfile`
exit 0
fi
;;
if [ -e $cidfile ]
then
echo "Stopping old container"
- docker stop -t 10 `cat $cidfile`
+ $docker_path stop -t 10 `cat $cidfile`
fi
run_bootstrap
if [ -e $cidfile ]
then
- docker rm `cat $cidfile` && rm $cidfile
+ $docker_path rm `cat $cidfile` && rm $cidfile
fi
run_start
if [ -e $cidfile ]
then
echo "destroying container $cidfile"
- docker stop -t 10 `cat $cidfile`
- docker rm `cat $cidfile` && rm $cidfile
+ $docker_path stop -t 10 `cat $cidfile`
+ $docker_path rm `cat $cidfile` && rm $cidfile
exit 0
else
echo "nothing to destroy cidfile does not exist"