thingsboard-aplcache
Changes
docker/.env 10(+4 -6)
docker/cassandra/Makefile 2(+1 -1)
docker/cassandra-setup/Dockerfile 12(+4 -8)
docker/cassandra-setup/install.sh 22(+14 -8)
docker/cassandra-setup/Makefile 8(+3 -5)
docker/docker-compose.yml 24(+4 -20)
docker/k8s/cassandra.yaml 0(+0 -0)
docker/k8s/cassandra-setup.yaml 22(+11 -11)
docker/k8s/common.yaml 0(+0 -0)
docker/k8s/tb.yaml 18(+15 -3)
docker/k8s/zookeeper.yaml 0(+0 -0)
docker/tb.env 23(+18 -5)
docker/tb/Dockerfile 4(+3 -1)
docker/tb/Makefile 2(+1 -1)
docker/tb/run-application.sh 40(+28 -12)
Details
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index 7e2a773..d080f84 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -115,7 +115,9 @@ cassandra:
# Thingsboard keyspace name
keyspace_name: "${CASSANDRA_KEYSPACE_NAME:thingsboard}"
# Specify node list
- url: "${CASSANDRA_URL:127.0.0.1:9042}"
+ host: "${CASSANDRA_HOST:127.0.0.1}"
+ # Specify node list
+ post: "${CASSANDRA_PORT:9042}"
# Enable/disable secure connection
ssl: "${CASSANDRA_USE_SSL:false}"
# Enable/disable JMX
@@ -233,7 +235,7 @@ spring:
jpa:
hibernate:
ddl-auto: "validate"
- database-platform: "org.hibernate.dialect.HSQLDialect"
+ database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.HSQLDialect}"
datasource:
driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
@@ -250,7 +252,7 @@ spring:
# jpa:
# hibernate:
# ddl-auto: "validate"
-# database-platform: "org.hibernate.dialect.PostgreSQLDialect"
+# database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}"
# datasource:
# driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
# url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
diff --git a/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java b/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java
index 2b9000d..d693802 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/cassandra/AbstractCassandraCluster.java
@@ -44,7 +44,7 @@ public abstract class AbstractCassandraCluster {
@Value("${cassandra.cluster_name}")
private String clusterName;
- @Value("${cassandra.url}")
+ @Value("${cassandra.host}:${cassandra.port}")
private String url;
@Value("${cassandra.compression}")
private String compression;
diff --git a/dao/src/test/resources/cassandra-test.properties b/dao/src/test/resources/cassandra-test.properties
index 82fcbe1..b9e2734 100644
--- a/dao/src/test/resources/cassandra-test.properties
+++ b/dao/src/test/resources/cassandra-test.properties
@@ -2,7 +2,9 @@ cassandra.cluster_name=Thingsboard Cluster
cassandra.keyspace_name=thingsboard
-cassandra.url=127.0.0.1:9142
+cassandra.host=127.0.0.1
+
+cassandra.port=9142
cassandra.ssl=false
docker/.env 10(+4 -6)
diff --git a/docker/.env b/docker/.env
index ff77f41..e330632 100644
--- a/docker/.env
+++ b/docker/.env
@@ -1,15 +1,13 @@
# cassandra environment variables
CASSANDRA_DATA_DIR=/home/docker/cassandra_volume
-CASSANDRA_URL=cassandra
# postgres environment variables
POSTGRES_DATA_DIR=/home/docker/postgres_volume
POSTGRES_DB=thingsboard
-POSTGRES_USER=postgres
-POSTGRES_PASSWORD=postgres
-POSTGRES_URL=postgres
+
+# hsqldb environment variables
+HSQLDB_DATA_DIR=/home/docker/hsqldb_volume
# environment variables for schema init and insert system and demo data
-CREATE_SCHEMA=true
-ADD_SYSTEM_DATA=false
+ADD_SCHEMA_AND_SYSTEM_DATA=false
ADD_DEMO_DATA=false
\ No newline at end of file
docker/cassandra/Makefile 2(+1 -1)
diff --git a/docker/cassandra/Makefile b/docker/cassandra/Makefile
index f277e9e..ae82253 100644
--- a/docker/cassandra/Makefile
+++ b/docker/cassandra/Makefile
@@ -7,4 +7,4 @@ build:
push: build
docker push ${PROJECT}/${APP}:${VERSION}
- docker push ${PROJECT}/${APP}:latest
+ docker push ${PROJECT}/${APP}:latest
docker/docker-compose.yml 24(+4 -20)
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 988a2db..7cbea95 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -25,15 +25,12 @@ services:
- "5683:5683/udp"
env_file:
- tb.env
- entrypoint: /run-application.sh
- tb-cassandra-schema:
- image: "thingsboard/tb-cassandra-schema:1.2.4"
environment:
- - CREATE_SCHEMA=${CREATE_SCHEMA}
- - ADD_SYSTEM_DATA=${ADD_SYSTEM_DATA}
+ - ADD_SCHEMA_AND_SYSTEM_DATA=${ADD_SCHEMA_AND_SYSTEM_DATA}
- ADD_DEMO_DATA=${ADD_DEMO_DATA}
- - CASSANDRA_URL=${CASSANDRA_URL}
- entrypoint: /install-schema.sh
+ volumes:
+ - "${HSQLDB_DATA_DIR}:/usr/share/thingsboard/data/sql"
+ entrypoint: /run-application.sh
cassandra:
image: "cassandra:3.9"
ports:
@@ -52,18 +49,5 @@ services:
- "5432"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- "${POSTGRES_DATA_DIR}:/var/lib/postgresql/data"
- tb-postgres-schema:
- image: "thingsboard/tb-postgres-schema:1.2.4"
- environment:
- - POSTGRES_URL=${POSTGRES_URL}
- - POSTGRES_DB=${POSTGRES_DB}
- - POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- - CREATE_SCHEMA=${CREATE_SCHEMA}
- - ADD_SYSTEM_DATA=${ADD_SYSTEM_DATA}
- - ADD_DEMO_DATA=${ADD_DEMO_DATA}
- entrypoint: /install-schema.sh
\ No newline at end of file
docker/tb.env 23(+18 -5)
diff --git a/docker/tb.env b/docker/tb.env
index 7947c23..89a7dda 100644
--- a/docker/tb.env
+++ b/docker/tb.env
@@ -1,9 +1,22 @@
#Thingsboard server configuration
-
-TB_CASSANDRA_SCHEMA_URL=tb-cassandra-schema
-CASSANDRA_URL=cassandra:9042
-ZOOKEEPER_URL=zk:2181
MQTT_BIND_ADDRESS=0.0.0.0
MQTT_BIND_PORT=1883
COAP_BIND_ADDRESS=0.0.0.0
-COAP_BIND_PORT=5683
\ No newline at end of file
+COAP_BIND_PORT=5683
+
+# zk config
+ZOOKEEPER_URL=zk:2181
+
+# type of database to use: sql[DEFAULT] or cassandra
+DATABASE_TYPE=cassandra
+
+# cassandra db config
+CASSANDRA_HOST=cassandra
+CASSANDRA_PORT=9042
+
+# postgres db config
+# SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
+# SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
+# SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard
+# SPRING_DATASOURCE_USERNAME=postgres
+# SPRING_DATASOURCE_PASSWORD=postgres
docker/tb/Dockerfile 4(+3 -1)
diff --git a/docker/tb/Dockerfile b/docker/tb/Dockerfile
index b2a3da6..993e7f3 100644
--- a/docker/tb/Dockerfile
+++ b/docker/tb/Dockerfile
@@ -19,4 +19,6 @@ FROM openjdk:8-jre
ADD run-application.sh /run-application.sh
ADD thingsboard.deb /thingsboard.deb
-RUN chmod +x /run-application.sh
+RUN apt-get update \
+ && apt-get install -y nmap \
+ && chmod +x /run-application.sh
docker/tb/Makefile 2(+1 -1)
diff --git a/docker/tb/Makefile b/docker/tb/Makefile
index b12e5a6..267a166 100644
--- a/docker/tb/Makefile
+++ b/docker/tb/Makefile
@@ -9,4 +9,4 @@ build:
push: build
docker push ${PROJECT}/${APP}:${VERSION}
- docker push ${PROJECT}/${APP}:latest
+ docker push ${PROJECT}/${APP}:latest
docker/tb/run-application.sh 40(+28 -12)
diff --git a/docker/tb/run-application.sh b/docker/tb/run-application.sh
index 4824133..783b35b 100755
--- a/docker/tb/run-application.sh
+++ b/docker/tb/run-application.sh
@@ -18,18 +18,34 @@
dpkg -i /thingsboard.deb
-reachable=0
-while [ $reachable -eq 0 ];
-do
- echo "$TB_CASSANDRA_SCHEMA_URL container is still in progress. waiting until it completed..."
- sleep 3
- ping -q -c 1 $TB_CASSANDRA_SCHEMA_URL > /dev/null 2>&1
- if [ "$?" -ne 0 ];
- then
- echo "$TB_CASSANDRA_SCHEMA_URL container completed!"
- reachable=1
- fi
-done
+if [ "$DATABASE_TYPE" == "cassandra" ]; then
+ until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
+ do
+ echo "Wait for cassandra db to start..."
+ sleep 10
+ done
+fi
+
+if [ "$DATABASE_TYPE" == "sql" ]; then
+ if [ "$SPRING_DRIVER_CLASS_NAME" == "org.postgresql.Driver" ]; then
+ until nmap postgres -p 5432 | grep "5432/tcp open"
+ do
+ echo "Waiting for postgres db to start..."
+ sleep 10
+ done
+ fi
+fi
+
+if [ "$ADD_SCHEMA_AND_SYSTEM_DATA" == "true" ]; then
+ echo "Creating 'Thingsboard' schema and system data..."
+ if [ "$ADD_DEMO_DATA" == "true" ]; then
+ echo "plus demo data..."
+ /usr/share/thingsboard/bin/install/install.sh --loadDemo
+ elif [ "$ADD_DEMO_DATA" == "false" ]; then
+ /usr/share/thingsboard/bin/install/install.sh
+ fi
+fi
+
# Copying env variables into conf files
printenv | awk -F "=" '{print "export " $1 "='\''" $2 "'\''"}' >> /usr/share/thingsboard/conf/thingsboard.conf