Commit c0a8849784f82372c23ef7302dbbc1fb7bce7c9d

Authored by Andrew Shvayka
Committed by GitHub
2 parents 14c5cf24 5e9309ee

Merge pull request #227 from volodymyr-babak/master

Docker updates for new release
... ... @@ -233,7 +233,7 @@ spring:
233 233 jpa:
234 234 hibernate:
235 235 ddl-auto: "validate"
236   - database-platform: "org.hibernate.dialect.HSQLDialect"
  236 + database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.HSQLDialect}"
237 237 datasource:
238 238 driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
239 239 url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
... ... @@ -250,7 +250,7 @@ spring:
250 250 # jpa:
251 251 # hibernate:
252 252 # ddl-auto: "validate"
253   -# database-platform: "org.hibernate.dialect.PostgreSQLDialect"
  253 +# database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}"
254 254 # datasource:
255 255 # driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
256 256 # url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
... ...
1 1 # cassandra environment variables
2 2 CASSANDRA_DATA_DIR=/home/docker/cassandra_volume
3   -CASSANDRA_URL=cassandra
4 3
5 4 # postgres environment variables
6 5 POSTGRES_DATA_DIR=/home/docker/postgres_volume
7 6 POSTGRES_DB=thingsboard
8   -POSTGRES_USER=postgres
9   -POSTGRES_PASSWORD=postgres
10   -POSTGRES_URL=postgres
  7 +
  8 +# hsqldb environment variables
  9 +HSQLDB_DATA_DIR=/home/docker/hsqldb_volume
11 10
12 11 # environment variables for schema init and insert system and demo data
13   -CREATE_SCHEMA=true
14   -ADD_SYSTEM_DATA=false
  12 +ADD_SCHEMA_AND_SYSTEM_DATA=false
15 13 ADD_DEMO_DATA=false
\ No newline at end of file
... ...
docker/cassandra-setup/Dockerfile renamed from docker/tb-cassandra-schema/Dockerfile
... ... @@ -14,15 +14,11 @@
14 14 # limitations under the License.
15 15 #
16 16
17   -FROM cassandra:3.9
  17 +FROM openjdk:8-jre
18 18
19   -ADD install-schema.sh /install-schema.sh
  19 +ADD install.sh /install.sh
  20 +ADD thingsboard.deb /thingsboard.deb
20 21
21 22 RUN apt-get update \
22 23 && apt-get install -y nmap \
23   - && chmod +x /install-schema.sh
24   -
25   -ADD schema.cql /schema.cql
26   -ADD demo-data.cql /demo-data.cql
27   -ADD system-data.cql /system-data.cql
28   -
  24 + && chmod +x /install.sh
... ...
docker/cassandra-setup/Makefile renamed from docker/tb-cassandra-schema/Makefile
1   -VERSION=1.2.4
  1 +VERSION=1.3.0
2 2 PROJECT=thingsboard
3   -APP=tb-cassandra-schema
  3 +APP=cassandra-setup
4 4
5 5 build:
6   - cp ../../dao/src/main/resources/cassandra/schema.cql .
7   - cp ../../dao/src/main/resources/cassandra/demo-data.cql .
8   - cp ../../dao/src/main/resources/cassandra/system-data.cql .
  6 + cp ../../application/target/thingsboard.deb .
9 7 docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest .
10   - rm schema.cql demo-data.cql system-data.cql
  8 + rm thingsboard.deb
11 9
12 10 push: build
13 11 docker push ${PROJECT}/${APP}:${VERSION}
... ...
docker/cassandra-setup/install.sh renamed from docker/tb-postgres-schema/Dockerfile 100644 → 100755
  1 +#!/bin/bash
1 2 #
2 3 # Copyright © 2016-2017 The Thingsboard Authors
3 4 #
... ... @@ -14,14 +15,19 @@
14 15 # limitations under the License.
15 16 #
16 17
17   -FROM postgres:9.6
18 18
19   -ADD install-schema.sh /install-schema.sh
  19 +dpkg -i /thingsboard.deb
20 20
21   -RUN apt-get update \
22   - && apt-get install -y nmap \
23   - && chmod +x /install-schema.sh
  21 +until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
  22 +do
  23 + echo "Wait for cassandra db to start..."
  24 + sleep 10
  25 +done
24 26
25   -ADD schema.sql /schema.sql
26   -ADD system-data.sql /system-data.sql
27   -ADD demo-data.sql /demo-data.sql
\ No newline at end of file
  27 +echo "Creating 'Thingsboard' schema and system data..."
  28 +if [ "$ADD_DEMO_DATA" == "true" ]; then
  29 + echo "plus demo data..."
  30 + /usr/share/thingsboard/bin/install/install.sh --loadDemo
  31 +elif [ "$ADD_DEMO_DATA" == "false" ]; then
  32 + /usr/share/thingsboard/bin/install/install.sh
  33 +fi
... ...
1   -VERSION=1.2.4
  1 +VERSION=1.3.0
2 2 PROJECT=thingsboard
3 3 APP=cassandra
4 4
... ... @@ -7,4 +7,4 @@ build:
7 7
8 8 push: build
9 9 docker push ${PROJECT}/${APP}:${VERSION}
10   - docker push ${PROJECT}/${APP}:latest
  10 + docker push ${PROJECT}/${APP}:latest
... ...
... ... @@ -18,22 +18,19 @@ version: '2'
18 18
19 19 services:
20 20 tb:
21   - image: "thingsboard/application:1.2.4"
  21 + image: "thingsboard/application:1.3.0"
22 22 ports:
23 23 - "8080:8080"
24 24 - "1883:1883"
25 25 - "5683:5683/udp"
26 26 env_file:
27 27 - tb.env
28   - entrypoint: /run-application.sh
29   - tb-cassandra-schema:
30   - image: "thingsboard/tb-cassandra-schema:1.2.4"
31 28 environment:
32   - - CREATE_SCHEMA=${CREATE_SCHEMA}
33   - - ADD_SYSTEM_DATA=${ADD_SYSTEM_DATA}
  29 + - ADD_SCHEMA_AND_SYSTEM_DATA=${ADD_SCHEMA_AND_SYSTEM_DATA}
34 30 - ADD_DEMO_DATA=${ADD_DEMO_DATA}
35   - - CASSANDRA_URL=${CASSANDRA_URL}
36   - entrypoint: /install-schema.sh
  31 + volumes:
  32 + - "${HSQLDB_DATA_DIR}:/usr/share/thingsboard/data/sql"
  33 + entrypoint: /run-application.sh
37 34 cassandra:
38 35 image: "cassandra:3.9"
39 36 ports:
... ... @@ -52,18 +49,5 @@ services:
52 49 - "5432"
53 50 environment:
54 51 - POSTGRES_DB=${POSTGRES_DB}
55   - - POSTGRES_USER=${POSTGRES_USER}
56   - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
57 52 volumes:
58 53 - "${POSTGRES_DATA_DIR}:/var/lib/postgresql/data"
59   - tb-postgres-schema:
60   - image: "thingsboard/tb-postgres-schema:1.2.4"
61   - environment:
62   - - POSTGRES_URL=${POSTGRES_URL}
63   - - POSTGRES_DB=${POSTGRES_DB}
64   - - POSTGRES_USER=${POSTGRES_USER}
65   - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
66   - - CREATE_SCHEMA=${CREATE_SCHEMA}
67   - - ADD_SYSTEM_DATA=${ADD_SYSTEM_DATA}
68   - - ADD_DEMO_DATA=${ADD_DEMO_DATA}
69   - entrypoint: /install-schema.sh
\ No newline at end of file
... ...
docker/k8s/cassandra-setup.yaml renamed from docker/tb-cassandra-schema/tb-cassandra-schema.yaml
... ... @@ -17,23 +17,25 @@
17 17 apiVersion: v1
18 18 kind: Pod
19 19 metadata:
20   - name: tb-cassandra-schema
  20 + name: cassandra-setup
21 21 spec:
22 22 containers:
23   - - name: tb-cassandra-schema
  23 + - name: cassandra-setup
24 24 imagePullPolicy: Always
25   - image: thingsboard/tb-cassandra-schema:1.2.4
  25 + image: thingsboard/cassandra-setup:1.3.0
26 26 env:
27   - - name: CREATE_SCHEMA
  27 + - name: ADD_DEMO_DATA
28 28 value: "true"
29   - - name: ADD_SYSTEM_DATA
30   - value: "true"
31   - - name : ADD_DEMO_DATA
32   - value: "true"
33   - - name : CASSANDRA_URL
  29 + - name : CASSANDRA_HOST
34 30 value: "cassandra-headless"
  31 + - name : CASSANDRA_PORT
  32 + value: "9042"
  33 + - name : DATABASE_TYPE
  34 + value: "cassandra"
  35 + - name : CASSANDRA_URL
  36 + value: "cassandra-headless:9042"
35 37 command:
36 38 - sh
37 39 - -c
38   - - /install-schema.sh
39   - restartPolicy: Never
\ No newline at end of file
  40 + - /install.sh
  41 + restartPolicy: Never
... ...
docker/k8s/cassandra.yaml renamed from docker/cassandra/cassandra.yaml
... ... @@ -54,7 +54,7 @@ spec:
54 54 topologyKey: "kubernetes.io/hostname"
55 55 containers:
56 56 - name: cassandra
57   - image: thingsboard/cassandra:1.2.4
  57 + image: thingsboard/cassandra:1.3.0
58 58 imagePullPolicy: Always
59 59 ports:
60 60 - containerPort: 7000
... ...
docker/k8s/common.yaml renamed from docker/common/common.yaml
docker/k8s/tb.yaml renamed from docker/tb/tb.yaml
... ... @@ -51,6 +51,9 @@ data:
51 51 zookeeper.enabled: "true"
52 52 zookeeper.url: "zk-headless"
53 53 cassandra.url: "cassandra-headless:9042"
  54 + cassandra.host: "cassandra-headless"
  55 + cassandra.port: "9042"
  56 + database.type: "cassandra"
54 57 ---
55 58 apiVersion: apps/v1beta1
56 59 kind: StatefulSet
... ... @@ -79,7 +82,7 @@ spec:
79 82 containers:
80 83 - name: tb
81 84 imagePullPolicy: Always
82   - image: thingsboard/application:1.2.4
  85 + image: thingsboard/application:1.3.0
83 86 ports:
84 87 - containerPort: 8080
85 88 name: ui
... ... @@ -100,11 +103,26 @@ spec:
100 103 configMapKeyRef:
101 104 name: tb-config
102 105 key: zookeeper.url
  106 + - name : CASSANDRA_HOST
  107 + valueFrom:
  108 + configMapKeyRef:
  109 + name: tb-config
  110 + key: cassandra.host
  111 + - name : CASSANDRA_PORT
  112 + valueFrom:
  113 + configMapKeyRef:
  114 + name: tb-config
  115 + key: cassandra.port
103 116 - name : CASSANDRA_URL
104 117 valueFrom:
105 118 configMapKeyRef:
106 119 name: tb-config
107 120 key: cassandra.url
  121 + - name: DATABASE_TYPE
  122 + valueFrom:
  123 + configMapKeyRef:
  124 + name: tb-config
  125 + key: database.type
108 126 - name : RPC_HOST
109 127 valueFrom:
110 128 fieldRef:
... ...
docker/k8s/zookeeper.yaml renamed from docker/zookeeper/zookeeper.yaml
... ... @@ -87,7 +87,7 @@ spec:
87 87 containers:
88 88 - name: zk
89 89 imagePullPolicy: Always
90   - image: thingsboard/zk:1.2.4
  90 + image: thingsboard/zk:1.3.0
91 91 ports:
92 92 - containerPort: 2181
93 93 name: client
... ...
1   -#!/bin/bash
2   -#
3   -# Copyright © 2016-2017 The Thingsboard Authors
4   -#
5   -# Licensed under the Apache License, Version 2.0 (the "License");
6   -# you may not use this file except in compliance with the License.
7   -# You may obtain a copy of the License at
8   -#
9   -# http://www.apache.org/licenses/LICENSE-2.0
10   -#
11   -# Unless required by applicable law or agreed to in writing, software
12   -# distributed under the License is distributed on an "AS IS" BASIS,
13   -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   -# See the License for the specific language governing permissions and
15   -# limitations under the License.
16   -#
17   -
18   -
19   -until nmap $CASSANDRA_URL -p 9042 | grep "9042/tcp open"
20   -do
21   - echo "Wait for $CASSANDRA_URL..."
22   - sleep 10
23   -done
24   -
25   -if [ "$CREATE_SCHEMA" == "true" ]; then
26   - echo "Creating 'Thingsboard' keyspace..."
27   - cqlsh $CASSANDRA_URL -f /schema.cql
28   - if [ "$?" -eq 0 ]; then
29   - echo "'Thingsboard' keyspace was successfully created!"
30   - else
31   - echo "There were issues while creating 'Thingsboard' keyspace!"
32   - fi
33   -fi
34   -
35   -if [ "$ADD_SYSTEM_DATA" == "true" ]; then
36   - echo "Adding system data..."
37   - cqlsh $CASSANDRA_URL -f /system-data.cql
38   - if [ "$?" -eq 0 ]; then
39   - echo "System data was successfully added!"
40   - else
41   - echo "There were issues while adding System data!"
42   - fi
43   -fi
44   -
45   -if [ "$ADD_DEMO_DATA" == "true" ]; then
46   - echo "Adding demo data..."
47   - cqlsh $CASSANDRA_URL -f /demo-data.cql
48   - if [ "$?" -eq 0 ]; then
49   - echo "Demo data was successfully added!"
50   - else
51   - echo "There were issues while adding Demo data!"
52   - fi
53   -fi
1   -VERSION=1.2.4
2   -PROJECT=thingsboard
3   -APP=tb-postgres-schema
4   -
5   -build:
6   - cp ../../dao/src/main/resources/postgres/schema.sql .
7   - cp ../../dao/src/main/resources/postgres/demo-data.sql .
8   - cp ../../dao/src/main/resources/postgres/system-data.sql .
9   - docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest .
10   - rm schema.sql demo-data.sql system-data.sql
11   -
12   -push: build
13   - docker push ${PROJECT}/${APP}:${VERSION}
14   - docker push ${PROJECT}/${APP}:latest
1   -#!/bin/bash
2   -#
3   -# Copyright © 2016-2017 The Thingsboard Authors
4   -#
5   -# Licensed under the Apache License, Version 2.0 (the "License");
6   -# you may not use this file except in compliance with the License.
7   -# You may obtain a copy of the License at
8   -#
9   -# http://www.apache.org/licenses/LICENSE-2.0
10   -#
11   -# Unless required by applicable law or agreed to in writing, software
12   -# distributed under the License is distributed on an "AS IS" BASIS,
13   -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   -# See the License for the specific language governing permissions and
15   -# limitations under the License.
16   -#
17   -
18   -until nmap $POSTGRES_URL -p 5432 | grep "5432/tcp open"
19   -do
20   - echo "Waiting for $POSTGRES_URL..."
21   - sleep 10
22   -done
23   -
24   -if [ "$CREATE_SCHEMA" == "true" ]; then
25   - echo "Creating 'Thingsboard' database schema..."
26   - PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_URL" -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f /schema.sql
27   - if [ "$?" -eq 0 ]; then
28   - echo "'Thingsboard' database schema was successfully created!"
29   - else
30   - echo "There were issues while creating 'Thingsboard' database schema!"
31   - fi
32   -fi
33   -
34   -if [ "$ADD_SYSTEM_DATA" == "true" ]; then
35   - echo "Adding system data..."
36   - PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_URL" -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f /system-data.sql
37   - if [ "$?" -eq 0 ]; then
38   - echo "System data was successfully added!"
39   - else
40   - echo "There were issues while adding System data!"
41   - fi
42   -fi
43   -
44   -if [ "$ADD_DEMO_DATA" == "true" ]; then
45   - echo "Adding demo data..."
46   - PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_URL" -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f /demo-data.sql
47   - if [ "$?" -eq 0 ]; then
48   - echo "Demo data was successfully added!"
49   - else
50   - echo "There were issues while adding Demo data!"
51   - fi
52   -fi
1 1 #Thingsboard server configuration
2   -
3   -TB_CASSANDRA_SCHEMA_URL=tb-cassandra-schema
4   -CASSANDRA_URL=cassandra:9042
5   -ZOOKEEPER_URL=zk:2181
6 2 MQTT_BIND_ADDRESS=0.0.0.0
7 3 MQTT_BIND_PORT=1883
8 4 COAP_BIND_ADDRESS=0.0.0.0
9   -COAP_BIND_PORT=5683
\ No newline at end of file
  5 +COAP_BIND_PORT=5683
  6 +
  7 +# zk config
  8 +ZOOKEEPER_URL=zk:2181
  9 +
  10 +# type of database to use: sql[DEFAULT] or cassandra
  11 +DATABASE_TYPE=sql
  12 +
  13 +# cassandra db config
  14 +CASSANDRA_URL=cassandra:9042
  15 +CASSANDRA_HOST=cassandra
  16 +CASSANDRA_PORT=9042
  17 +
  18 +# postgres db config
  19 +POSTGRES_HOST=cassandra
  20 +POSTGRES_PORT=9042
  21 +# SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
  22 +# SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
  23 +# SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard
  24 +# SPRING_DATASOURCE_USERNAME=postgres
  25 +# SPRING_DATASOURCE_PASSWORD=postgres
... ...
... ... @@ -19,4 +19,6 @@ FROM openjdk:8-jre
19 19 ADD run-application.sh /run-application.sh
20 20 ADD thingsboard.deb /thingsboard.deb
21 21
22   -RUN chmod +x /run-application.sh
  22 +RUN apt-get update \
  23 + && apt-get install -y nmap \
  24 + && chmod +x /run-application.sh
... ...
1   -VERSION=1.2.4
  1 +VERSION=1.3.0
2 2 PROJECT=thingsboard
3 3 APP=application
4 4
... ... @@ -9,4 +9,4 @@ build:
9 9
10 10 push: build
11 11 docker push ${PROJECT}/${APP}:${VERSION}
12   - docker push ${PROJECT}/${APP}:latest
  12 + docker push ${PROJECT}/${APP}:latest
... ...
... ... @@ -18,18 +18,34 @@
18 18
19 19 dpkg -i /thingsboard.deb
20 20
21   -reachable=0
22   -while [ $reachable -eq 0 ];
23   -do
24   - echo "$TB_CASSANDRA_SCHEMA_URL container is still in progress. waiting until it completed..."
25   - sleep 3
26   - ping -q -c 1 $TB_CASSANDRA_SCHEMA_URL > /dev/null 2>&1
27   - if [ "$?" -ne 0 ];
28   - then
29   - echo "$TB_CASSANDRA_SCHEMA_URL container completed!"
30   - reachable=1
31   - fi
32   -done
  21 +if [ "$DATABASE_TYPE" == "cassandra" ]; then
  22 + until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
  23 + do
  24 + echo "Wait for cassandra db to start..."
  25 + sleep 10
  26 + done
  27 +fi
  28 +
  29 +if [ "$DATABASE_TYPE" == "sql" ]; then
  30 + if [ "$SPRING_DRIVER_CLASS_NAME" == "org.postgresql.Driver" ]; then
  31 + until nmap $POSTGRES_HOST -p $POSTGRES_PORT | grep "$POSTGRES_PORT/tcp open"
  32 + do
  33 + echo "Waiting for postgres db to start..."
  34 + sleep 10
  35 + done
  36 + fi
  37 +fi
  38 +
  39 +if [ "$ADD_SCHEMA_AND_SYSTEM_DATA" == "true" ]; then
  40 + echo "Creating 'Thingsboard' schema and system data..."
  41 + if [ "$ADD_DEMO_DATA" == "true" ]; then
  42 + echo "plus demo data..."
  43 + /usr/share/thingsboard/bin/install/install.sh --loadDemo
  44 + elif [ "$ADD_DEMO_DATA" == "false" ]; then
  45 + /usr/share/thingsboard/bin/install/install.sh
  46 + fi
  47 +fi
  48 +
33 49
34 50 # Copying env variables into conf files
35 51 printenv | awk -F "=" '{print "export " $1 "='\''" $2 "'\''"}' >> /usr/share/thingsboard/conf/thingsboard.conf
... ...
1   -VERSION=1.2.4
  1 +VERSION=1.3.0
2 2 PROJECT=thingsboard
3 3 APP=zk
4 4
... ...