Pin jnr-unixsocket for Docker plugin to 0.13
[music.git] / distribution / cassandra / docker-entrypoint.sh
1 #!/bin/bash
2 set -e
3
4 for f in /docker-entrypoint-initdb.d/*.cql; do
5     chown cassandra.root "$f"
6 done
7
8
9 # first arg is `-f` or `--some-option`
10 # or there are no args
11 if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
12     set -- cassandra -f "$@"
13 fi
14
15 # allow the container to be started with `--user`
16 if [ "$1" = 'cassandra' -a "$(id -u)" = '0' ]; then
17     chown -R cassandra /var/lib/cassandra /var/log/cassandra "$CASSANDRA_CONFIG"
18     exec gosu cassandra "$BASH_SOURCE" "$@"
19 fi
20
21 if [ "$1" = 'cassandra' ]; then
22     : ${CASSANDRA_RPC_ADDRESS='0.0.0.0'}
23
24     : ${CASSANDRA_LISTEN_ADDRESS='auto'}
25     if [ "$CASSANDRA_LISTEN_ADDRESS" = 'auto' ]; then
26         CASSANDRA_LISTEN_ADDRESS="$(hostname --ip-address)"
27     fi
28
29     : ${CASSANDRA_BROADCAST_ADDRESS="$CASSANDRA_LISTEN_ADDRESS"}
30
31     if [ "$CASSANDRA_BROADCAST_ADDRESS" = 'auto' ]; then
32         CASSANDRA_BROADCAST_ADDRESS="$(hostname --ip-address)"
33     fi
34     : ${CASSANDRA_BROADCAST_RPC_ADDRESS:=$CASSANDRA_BROADCAST_ADDRESS}
35
36     if [ -n "${CASSANDRA_NAME:+1}" ]; then
37         : ${CASSANDRA_SEEDS:="cassandra"}
38     fi
39     : ${CASSANDRA_SEEDS:="$CASSANDRA_BROADCAST_ADDRESS"}
40     
41     sed -ri 's/(- seeds:).*/\1 "'"$CASSANDRA_SEEDS"'"/' "$CASSANDRA_CONFIG/cassandra.yaml"
42
43     for yaml in \
44         broadcast_address \
45         broadcast_rpc_address \
46         cluster_name \
47         endpoint_snitch \
48         listen_address \
49         num_tokens \
50         rpc_address \
51         start_rpc \
52     ; do
53         var="CASSANDRA_${yaml^^}"
54         val="${!var}"
55         if [ "$val" ]; then
56             sed -ri 's/^(# )?('"$yaml"':).*/\2 '"$val"'/' "$CASSANDRA_CONFIG/cassandra.yaml"
57         fi
58     done
59
60     for rackdc in dc rack; do
61         var="CASSANDRA_${rackdc^^}"
62         val="${!var}"
63         if [ "$val" ]; then
64             sed -ri 's/^('"$rackdc"'=).*/\1 '"$val"'/' "$CASSANDRA_CONFIG/cassandra-rackdc.properties"
65         fi
66     done
67 fi
68
69 echo "Updating username and password"
70 for f in /docker-entrypoint-initdb.d/music*.cql; do
71     if [ "${CASSUSER}" ]; then
72         sed -ri 's/CASSUSER/'${CASSUSER}'/' "$f"
73     fi
74     if [ "${CASSPASS}" ]; then
75         sed -ri 's/CASSPASS/'${CASSPASS}'/' "$f"
76     fi
77 done
78 echo "Updating username and password - Complete"
79
80
81
82
83 echo "################################ Let run cql's ##############################"
84 for f in /docker-entrypoint-initdb.d/*; do
85     
86     case "$f" in
87         *.cql)
88             echo "$0: running $f" && until cqlsh -u cassandra -p cassandra -f "$f"; do >&2 echo "Cassandra is unavailable - sleeping"; sleep 2; done & ;;
89         *)        echo "$0: ignoring $f" ;;
90     esac
91     echo
92 done
93
94 exec "$@"