Skip to content

Instantly share code, notes, and snippets.

@haukurk
Created April 1, 2017 10:41
Show Gist options
  • Save haukurk/46cfa79c8ae03dea27d6da08cfcabb93 to your computer and use it in GitHub Desktop.
Save haukurk/46cfa79c8ae03dea27d6da08cfcabb93 to your computer and use it in GitHub Desktop.
Deployment Docker Script
#!/usr/bin/env bash
set -e
echo '>>> Get old container id'
CID=$(sudo docker ps | grep "project" | awk '{print $1}')
echo $CID
echo '>>> Building new image'
# Due to a bug in Docker we need to analyse the log to find out if build passed (see https://github.com/dotcloud/docker/issues/1875)
sudo docker build ./deploy | tee /tmp/docker_build_result.log
RESULT=$(cat /tmp/docker_build_result.log | tail -n 1)
if [[ "$RESULT" != *Successfully* ]];
then
exit -1
fi
echo '>>> Tagging new image'
NEW=$(sudo docker ps -a -q | head -n 1)
sudo docker commit $NEW project
echo '>>> Stopping old container'
if [ "$CID" != "" ];
then
sudo docker stop $CID
fi
echo '>>> Restarting docker'
sudo service docker restart
sleep 5
echo '>>> Starting new container'
sudo docker run -p 3000:80 -d project /usr/bin/supervisord --nodaemon
echo '>>> Cleaning up containers'
sudo docker ps -a | grep "Exit" | awk '{print $1}' | while read -r id ; do
sudo docker rm $id
done
echo '>>> Cleaning up images'
sudo docker images | grep "^<none>" | head -n 1 | awk 'BEGIN { FS = "[ \t]+" } { print $3 }' | while read -r id ; do
sudo docker rmi $id
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment