thingsboard-aplcache

Merge pull request #227 from volodymyr-babak/master Docker

7/31/2017 9:03:28 AM

Changes

docker/.env 10(+4 -6)

docker/k8s/tb.yaml 20(+19 -1)

docker/tb.env 26(+21 -5)

docker/tb-cassandra-schema/install-schema.sh 53(+0 -53)

docker/tb-postgres-schema/install-schema.sh 52(+0 -52)

docker/tb-postgres-schema/Makefile 14(+0 -14)

Details

diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index 7e2a773..e57018d 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -233,7 +233,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 +250,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}"

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
diff --git a/docker/cassandra/Makefile b/docker/cassandra/Makefile
index f277e9e..2cc2139 100644
--- a/docker/cassandra/Makefile
+++ b/docker/cassandra/Makefile
@@ -1,4 +1,4 @@
-VERSION=1.2.4
+VERSION=1.3.0
 PROJECT=thingsboard
 APP=cassandra
 
@@ -7,4 +7,4 @@ build:
 
 push: build
 	docker push ${PROJECT}/${APP}:${VERSION}
-    docker push ${PROJECT}/${APP}:latest
+	docker push ${PROJECT}/${APP}:latest
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 988a2db..d2673dc 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -18,22 +18,19 @@ version: '2'
 
 services:
   tb:
-    image: "thingsboard/application:1.2.4"
+    image: "thingsboard/application:1.3.0"
     ports:
       - "8080:8080"
       - "1883:1883"
       - "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 26(+21 -5)

diff --git a/docker/tb.env b/docker/tb.env
index 7947c23..1a512fd 100644
--- a/docker/tb.env
+++ b/docker/tb.env
@@ -1,9 +1,25 @@
 #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=sql
+
+# cassandra db config
+CASSANDRA_URL=cassandra:9042
+CASSANDRA_HOST=cassandra
+CASSANDRA_PORT=9042
+
+# postgres db config
+POSTGRES_HOST=cassandra
+POSTGRES_PORT=9042
+# 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
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
diff --git a/docker/tb/Makefile b/docker/tb/Makefile
index b12e5a6..ce460c0 100644
--- a/docker/tb/Makefile
+++ b/docker/tb/Makefile
@@ -1,4 +1,4 @@
-VERSION=1.2.4
+VERSION=1.3.0
 PROJECT=thingsboard
 APP=application
 
@@ -9,4 +9,4 @@ build:
 
 push: build
 	docker push ${PROJECT}/${APP}:${VERSION}
-    docker push ${PROJECT}/${APP}:latest
+	docker push ${PROJECT}/${APP}:latest
diff --git a/docker/tb/run-application.sh b/docker/tb/run-application.sh
index 4824133..55a2988 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_HOST -p $POSTGRES_PORT | grep "$POSTGRES_PORT/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
diff --git a/docker/zookeeper/Makefile b/docker/zookeeper/Makefile
index 9ac2703..f380589 100644
--- a/docker/zookeeper/Makefile
+++ b/docker/zookeeper/Makefile
@@ -1,4 +1,4 @@
-VERSION=1.2.4
+VERSION=1.3.0
 PROJECT=thingsboard
 APP=zk