-
Notifications
You must be signed in to change notification settings - Fork 0
writing an init.d script for a docker container
Tony Woode edited this page Apr 8, 2015
·
1 revision
This describes a simple init.d script for running a single instance of a docker container.
First, dockerise your component. Then make a copy of the script below - call it init.d, create it next to your Dockerfile. Change references to logger to your component. Adjust the INIT INFO block to taste. Set NAME to the name you specified when building the docker container (docker build -t $NAME .) and CONTAINER_OPTS to any runtime parameters like port mappings or external colume specifications.
#!/bin/bash
#!/bin/bash
### BEGIN INIT INFO
# Provides: logger
# Required-Start: $syslog $remote_fs docker
# Required-Stop: $syslog $remote_fs docker
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Logger
# Description: OpenShare logger component
### END INIT INFO
NAME=logger
CONTAINER_OPTS="--env AMQP_HOST=192.168.1.27 -v /var/log:/var/log"
# Source function library.
. /lib/lsb/init-functions
start() {
echo -n "Starting dokcer container $NAME: "
/usr/bin/docker rm $NAME 2>/dev/null
/usr/bin/docker run --name=$NAME -d $CONTAINER_OPTS $NAME
RETVAL=$?
touch /var/lock/$NAME
return $RETVAL
}
stop() {
echo -n "Shutting down $NAME: "
/usr/bin/docker kill $NAME
RETVAL=$?
rm -f /var/lock/$NAME
return $RETVAL
}
status() {
echo -n "Checking $NAME status: "
/usr/bin/docker top $NAME
RETVAL=$?
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
reload)
stop
start
;;
*)
echo "Usage: $0 {start|stop|status|reload|restart[|probe]}"
exit 1
;;
esac
exit $?You can then install with the commands below (change logger to whatever your component is called) - either run the cp and update-rc.d commands directly or add to your build process:
install:
cp init.d /etc/init.d/logger
update-rc.d logger defaults