Docker update and POM fix
[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 for f in /docker-entrypoint-initdb.d/*.cql; do
70     if [ "${CASSUSER}" ]; then
71         sed -ri 's/CASSUSER/'${CASSUSER}'/' "$f"
72     fi
73     if [ "${CASSPASS}" ]; then
74         sed -ri 's/CASSPASS/'${CASSPASS}'/' "$f"
75     fi
76 done
77
78
79
80
81 echo "################################ Let run Scripts ##############################"
82 for f in /docker-entrypoint-initdb.d/*; do
83     
84     case "$f" in
85         *.cql)
86             echo "$0: running $f" && until cqlsh -u cassandra -p cassandra -f "$f"; do >&2 echo "Cassandra is unavailable - sleeping"; sleep 2; done & ;;
87         *)        echo "$0: ignoring $f" ;;
88     esac
89     echo
90 done
91 echo "################################ Let run Scripts End ##############################"
92
93 exec "$@"