diff --git a/Dockerfile.cassandra b/Dockerfile.cassandra new file mode 100644 index 0000000000..9fe1ee528a --- /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/base-docker-compose.yml b/base-docker-compose.yml index 4c19a54fb6..bf8afacc1e 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/entrypoint-with-db-init.sh b/entrypoint-with-db-init.sh new file mode 100644 index 0000000000..fee2cf482e --- /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 "$@"