thingsboard-aplcache

add cassandra schema initialization

5/11/2018 11:38:25 AM

Details

diff --git a/base-docker-compose.yml b/base-docker-compose.yml
index 4c19a54..bf8afac 100644
--- a/base-docker-compose.yml
+++ b/base-docker-compose.yml
@@ -20,6 +20,9 @@ services:
       - "5432:5432"
 
   cassandra-tb:
+    build:
+      context: .
+      dockerfile: Dockerfile.cassandra
     image: cassandra
     networks:
       - core
@@ -27,7 +30,9 @@ services:
       - "7199:7199"
       - "9160:9160"
       - "9042:9042"
-
+    volumes:
+      - /cassandra:/var/lib/cassandra
+      - ./db-schema:/docker-entrypoint-initdb.d/
   redis:
     image: redis:4.0
     networks:
diff --git a/Dockerfile.cassandra b/Dockerfile.cassandra
new file mode 100644
index 0000000..9fe1ee5
--- /dev/null
+++ b/Dockerfile.cassandra
@@ -0,0 +1,12 @@
+FROM cassandra
+
+WORKDIR /opt/cassandra
+
+COPY dao/src/main/resources/cassandra/schema.cql /opt/cassandra
+COPY entrypoint-with-db-init.sh /opt/cassandra/entrypoint-with-db-init.sh
+
+RUN chmod +x /opt/cassandra/entrypoint-with-db-init.sh
+
+ENTRYPOINT ["/opt/cassandra/entrypoint-with-db-init.sh"]
+CMD ["cassandra", "-f"]
+
diff --git a/entrypoint-with-db-init.sh b/entrypoint-with-db-init.sh
new file mode 100644
index 0000000..fee2cf4
--- /dev/null
+++ b/entrypoint-with-db-init.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+if [[ $1 = 'cassandra' ]]; then
+  # Create default keyspace for single node cluster
+
+  until cqlsh -f/opt/cassandra/schema.cql; do
+    echo "cqlsh: Cassandra is unavailable - retring"
+    sleep 2
+  done &
+fi
+
+exec /docker-entrypoint.sh "$@"