CAN MERGE 95/2295/4
authorJonas Bjurel <jonas.bjurel@ericsson.com>
Wed, 7 Oct 2015 14:10:16 +0000 (16:10 +0200)
committerJonas Bjurel <jonas.bjurel@ericsson.com>
Thu, 8 Oct 2015 12:52:11 +0000 (12:52 +0000)
VERIFIED
Description: Improved handling of docker clean-up
JIRA: FUEL-71

Change-Id: I565f77e227da2dcbaecd86582ab6890508726607
Signed-off-by: Jonas Bjurel <jonas.bjurel@ericsson.com>
fuel/build/docker/runcontext

index 52b46ad..77e4921 100755 (executable)
@@ -1,4 +1,5 @@
 #!/bin/bash
+set -e
 ##############################################################################
 # Copyright (c) 2015 Ericsson AB and others.
 # stefan.k.berg@ericsson.com
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 #
+
+############################################################################
+# BEGIN of Exit handlers
+#
+
+do_exit () {
+    CID=`cat $CID_FILE`
+    rm -f $CID_FILE
+    set +e
+    docker kill $CID > /dev/null 2>&1
+    docker rm -f $CID > /dev/null 2>&1
+    docker rmi -f $IID > /dev/null 2>&1
+    set -e
+}
+
+#
+# End of Exit handlers
+############################################################################
+
+trap do_exit SIGINT SIGTERM EXIT
 context=$1
 shift
 GID=`id -g`
 USER=`whoami`
-res=`docker build -q --rm -  <<EOF
+res=`docker build -q --force-rm -  <<EOF
 FROM $context
 RUN date || date
 RUN /root/setcontext $USER $UID $GID $HOME
 EOF`
 GITROOT=`git rev-parse --show-toplevel`
-CID=`echo $res | sed 's/.* //'`
-
-    RUN_CONTEXT_OPT="--privileged=true --rm -i -e HOME=$HOME -u $USER -w $PWD -v ${HOME}/.ssh:${HOME}/.ssh -v $GITROOT:$GITROOT"
+IID=`echo $res | sed 's/.* //'`
+CID_FILE=`mktemp -u -t runcontext.XXXXXXXXXX`
+RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm -i -e HOME=$HOME -u $USER -w $PWD -v ${HOME}/.ssh:${HOME}/.ssh -v $GITROOT:$GITROOT"
 
 if [  "${INTERACTIVE}" != "FALSE" ]; then
     RUN_CONTEXT_OPT+=" -t"
 fi
 
-echo command: docker run ${RUN_CONTEXT_OPT} $CID "$@"
-docker run ${RUN_CONTEXT_OPT} $CID "$@"
-
-rc=$?
-docker rmi -f $CID > /dev/null
-exit $rc
+echo command: docker run ${RUN_CONTEXT_OPT} $IID "$@"
+docker run ${RUN_CONTEXT_OPT} $IID "$@"