3c52f10a47da2e2b6f5a7c0ce20315a077a58844
[sima-docker.git] / do
1 #!/bin/sh
2
3 DIR=$(dirname $(readlink -f $0))
4
5 ICE_PORT=${ICEPORT:-8001}
6 MPD_PORT=${MPDPORT:-6601}
7 LISTEN=${LISTEN:-127.0.0.1}
8
9 # make output verbose
10 #set -o xtrace -o nounset
11 _is_running () {
12     IS_RUNNING=$(docker inspect --format='{{.State.Running}}' sima 2>&1)
13     case $IS_RUNNING in
14         true)
15             return 0
16             ;;
17         false)
18             return 1
19             ;;
20         *)
21             #echo $IS_RUNNING
22             return 2
23             ;;
24     esac
25 }
26 log_icecast () {
27     # Monitor logs
28     docker exec -ti sima /usr/bin/tail -F /var/log/icecast2/access.log /var/log/icecast2/error.log
29 }
30
31 build () {
32     # Build image with icecast
33     docker build -t kaliko/sima ${DIR}/sima
34 }
35
36 log () {
37     _is_running && docker logs -f sima
38 }
39
40 stop () {
41     _is_running && docker stop -t 3 sima
42 }
43
44 discover () {
45     arg=${1:-false}
46     _is_running || { echo "No running container detected!"; exit 1; }
47     docker port sima | awk '$1 ~ /^8000\/tcp.*/ { printf "# HTTP running on: http://%s\n", $3 }'
48     if [ $arg = "false" ];then
49         docker port sima | awk -F: '$1 ~ /^6600\/tcp.*/ { printf "# MPD running on port: %s\n", $2 }'
50     else
51         docker port sima | awk -F: '$1 ~ /^6600\/tcp.*/ { printf "# MPD running on port: %s\nexport MPD_PORT=%s\n", $2, $2 }'
52     fi
53 }
54
55 run() { start; }
56 start () {
57     # Start
58     _is_running
59     case $? in
60         0)
61             echo 'Already running container'
62             ;;
63         1)
64             echo 'Running the current sima container'
65             docker start sima
66             ;;
67         *)
68             test -z "${MUSIC}" && { echo "# Need a music directory to mount, please set MUSIC var:";
69                 echo "MUSIC=~Music ./do start";
70                 exit 1; }
71             echo 'launching a new sima container'
72             local options="-p ${LISTEN}:${ICE_PORT}:8000"
73             options="${options} -p ${LISTEN}:${MPD_PORT}:6600"
74             options="${options} --volume ${MUSIC}:/music:ro"
75             docker run ${options} --detach=true --name sima kaliko/sima
76             ;;
77     esac
78     discover
79 }
80
81 $@