Commit 00e89617d507a93730018e61884bceb899871023
1 parent
e51cafa1
Create single instance docker builds. Move MSA docker configuration to the root.
Showing
66 changed files
with
1567 additions
and
1490 deletions
1 | -# cassandra environment variables | |
2 | -CASSANDRA_DATA_DIR=/home/docker/cassandra_volume | |
3 | 1 | |
4 | -# postgres environment variables | |
5 | -POSTGRES_DATA_DIR=/home/docker/postgres_volume | |
6 | -POSTGRES_DB=thingsboard | |
2 | +DOCKER_REPO=thingsboard | |
7 | 3 | |
8 | -# hsqldb environment variables | |
9 | -HSQLDB_DATA_DIR=/home/docker/hsqldb_volume | |
4 | +JS_EXECUTOR_DOCKER_NAME=tb-js-executor | |
5 | +TB_NODE_DOCKER_NAME=tb-node | |
6 | +WEB_UI_DOCKER_NAME=tb-web-ui | |
7 | +MQTT_TRANSPORT_DOCKER_NAME=tb-mqtt-transport | |
8 | +HTTP_TRANSPORT_DOCKER_NAME=tb-http-transport | |
9 | +COAP_TRANSPORT_DOCKER_NAME=tb-coap-transport | |
10 | 10 | |
11 | -# environment variables for schema init and insert system and demo data | |
12 | -ADD_SCHEMA_AND_SYSTEM_DATA=false | |
13 | -ADD_DEMO_DATA=false | |
\ No newline at end of file | ||
11 | +TB_VERSION=latest | |
12 | + | |
13 | +# Database used by ThingsBoard, can be either local (local HSQLDB), postgres (PostgreSQL), cassandra (Cassandra). | |
14 | +# In case of postgres or cassandra corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.cassandra.yml for details). | |
15 | + | |
16 | +DATABASE=cassandra | |
17 | + | |
18 | +KAFKA_TOPICS="js.eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.rule-engine:30:1" | ... | ... |
docker/.gitignore
renamed from
msa/docker/.gitignore
docker/README.md
0 → 100644
1 | +# Docker configuration for ThingsBoard Microservices | |
2 | + | |
3 | +This folder containing scripts and Docker Compose configurations to run ThingsBoard in Microservices mode. | |
4 | + | |
5 | +## Installation | |
6 | + | |
7 | +Execute the following command to run DataBase installation: | |
8 | + | |
9 | +` | |
10 | +$ ./docker-install-tb.sh --loadDemo | |
11 | +` | |
12 | + | |
13 | +- `--loadDemo` - optional argument. Whether to load additional demo data. | |
14 | + | |
15 | +## Running | |
16 | + | |
17 | +Execute the following command to run services: | |
18 | + | |
19 | +` | |
20 | +$ ./docker-start-services.sh | |
21 | +` | |
22 | + | |
23 | +Execute the following command to stop services: | |
24 | + | |
25 | +` | |
26 | +$ ./docker-stop-services.sh | |
27 | +` | |
28 | + | |
29 | +Execute the following command to stop and completely remove deployed docker containers: | |
30 | + | |
31 | +` | |
32 | +$ ./docker-remove-services.sh | |
33 | +` | |
34 | + | |
35 | +Execute the following command to update particular services (pull newer docker image and rebuild container): | |
36 | + | |
37 | +` | |
38 | +$ ./docker-update-service.sh [SERVICE...] | |
39 | +` | |
40 | + | |
41 | +## Upgrading | |
42 | + | |
43 | +In case when database upgrade is needed, execute the following commands: | |
44 | + | |
45 | +` | |
46 | +$ ./docker-stop-services.sh | |
47 | +$ ./docker-upgrade-tb.sh --fromVersion=[FROM_VERSION] | |
48 | +$ ./docker-start-services.sh | |
49 | +` | |
50 | + | |
51 | +- `FROM_VERSION` - from which version upgrade should be started. | ... | ... |
docker/cassandra-setup/Makefile
deleted
100644 → 0
1 | -VERSION=2.1.0 | |
2 | -PROJECT=thingsboard | |
3 | -APP=cassandra-setup | |
4 | - | |
5 | -build: | |
6 | - cp ../../application/target/thingsboard.deb . | |
7 | - docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest . | |
8 | - rm thingsboard.deb | |
9 | - | |
10 | -push: build | |
11 | - docker push ${PROJECT}/${APP}:${VERSION} | |
12 | - docker push ${PROJECT}/${APP}:latest |
docker/cassandra-upgrade/Makefile
deleted
100644 → 0
1 | -VERSION=2.1.0 | |
2 | -PROJECT=thingsboard | |
3 | -APP=cassandra-upgrade | |
4 | - | |
5 | -build: | |
6 | - cp ../../application/target/thingsboard.deb . | |
7 | - docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest . | |
8 | - rm thingsboard.deb | |
9 | - | |
10 | -push: build | |
11 | - docker push ${PROJECT}/${APP}:${VERSION} | |
12 | - docker push ${PROJECT}/${APP}:latest |
docker/cassandra/Makefile
deleted
100644 → 0
docker/check-dirs.sh
renamed from
msa/docker/check-dirs.sh
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | -dirsArray=("./haproxy/certs.d" "./haproxy/letsencrypt" "./tb-node/db" "./tb-node/log") | |
18 | +dirsArray=("./haproxy/certs.d" "./haproxy/letsencrypt" "./tb-node/db" "./tb-node/postgres" "./tb-node/cassandra" "./tb-node/log") | |
19 | 19 | |
20 | 20 | for dir in ${dirsArray[@]} |
21 | 21 | do | ... | ... |
docker/cluster-mode-thirdparty.yml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | -version: '3.3' | |
18 | -services: | |
19 | - zookeeper: | |
20 | - image: wurstmeister/zookeeper | |
21 | - networks: | |
22 | - - core | |
23 | - ports: | |
24 | - - "2181:2181" | |
25 | - | |
26 | - cassandra: | |
27 | - image: cassandra:3.11.2 | |
28 | - networks: | |
29 | - - core | |
30 | - ports: | |
31 | - - "7199:7199" | |
32 | - - "9160:9160" | |
33 | - - "9042:9042" | |
34 | - | |
35 | - redis: | |
36 | - image: redis:4.0 | |
37 | - networks: | |
38 | - - core | |
39 | - command: redis-server --maxclients 2000 | |
40 | - ports: | |
41 | - - "6379:6379" | |
42 | - | |
43 | -networks: | |
44 | - core: | |
45 | - |
docker/compose-utils.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2018 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 | +function additionalComposeArgs() { | |
19 | + source .env | |
20 | + ADDITIONAL_COMPOSE_ARGS="" | |
21 | + case $DATABASE in | |
22 | + local) | |
23 | + ;; | |
24 | + postgres) | |
25 | + ADDITIONAL_COMPOSE_ARGS="-f docker-compose.postgres.yml" | |
26 | + ;; | |
27 | + cassandra) | |
28 | + ADDITIONAL_COMPOSE_ARGS="-f docker-compose.cassandra.yml" | |
29 | + ;; | |
30 | + *) | |
31 | + echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either local, postgres or cassandra." >&2 | |
32 | + exit 1 | |
33 | + esac | |
34 | + echo $ADDITIONAL_COMPOSE_ARGS | |
35 | +} | |
36 | + | |
37 | +function additionalStartupServices() { | |
38 | + source .env | |
39 | + ADDITIONAL_STARTUP_SERVICES="" | |
40 | + case $DATABASE in | |
41 | + local) | |
42 | + ;; | |
43 | + postgres) | |
44 | + ADDITIONAL_STARTUP_SERVICES=postgres | |
45 | + ;; | |
46 | + cassandra) | |
47 | + ADDITIONAL_STARTUP_SERVICES=cassandra | |
48 | + ;; | |
49 | + *) | |
50 | + echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either local, postgres or cassandra." >&2 | |
51 | + exit 1 | |
52 | + esac | |
53 | + echo $ADDITIONAL_STARTUP_SERVICES | |
54 | +} | ... | ... |
docker/docker-compose.cassandra.yml
renamed from
docker/docker-compose.static.yml
... | ... | @@ -14,16 +14,21 @@ |
14 | 14 | # limitations under the License. |
15 | 15 | # |
16 | 16 | |
17 | -version: '2' | |
17 | +version: '2.2' | |
18 | 18 | |
19 | 19 | services: |
20 | 20 | cassandra: |
21 | + restart: always | |
22 | + image: "cassandra:3.11.3" | |
21 | 23 | ports: |
22 | - - "9042:9042" | |
23 | - - "9160:9160" | |
24 | - zk: | |
25 | - ports: | |
26 | - - "2181:2181" | |
27 | - postgres: | |
28 | - ports: | |
29 | - - "5432:5432" | |
\ No newline at end of file | ||
24 | + - "9042" | |
25 | + volumes: | |
26 | + - ./tb-node/cassandra:/var/lib/cassandra | |
27 | + tb: | |
28 | + environment: | |
29 | + DATABASE_TS_TYPE: cassandra | |
30 | + DATABASE_ENTITIES_TYPE: cassandra | |
31 | + CASSANDRA_URL: cassandra:9042 | |
32 | + depends_on: | |
33 | + - kafka | |
34 | + - cassandra | ... | ... |
docker/docker-compose.postgres.yml
renamed from
docker/docker-compose-tests.yml
... | ... | @@ -14,14 +14,27 @@ |
14 | 14 | # limitations under the License. |
15 | 15 | # |
16 | 16 | |
17 | -version: '3.3' | |
17 | +version: '2.2' | |
18 | + | |
18 | 19 | services: |
19 | - redis: | |
20 | - image: redis:4.0 | |
21 | - networks: | |
22 | - - core | |
20 | + postgres: | |
21 | + restart: always | |
22 | + image: "postgres:9.6" | |
23 | 23 | ports: |
24 | - - "6379:6379" | |
25 | - | |
26 | -networks: | |
27 | - core: | |
24 | + - "5432" | |
25 | + environment: | |
26 | + POSTGRES_DB: thingsboard | |
27 | + volumes: | |
28 | + - ./tb-node/postgres:/var/lib/postgresql/data | |
29 | + tb: | |
30 | + environment: | |
31 | + DATABASE_TS_TYPE: sql | |
32 | + DATABASE_ENTITIES_TYPE: sql | |
33 | + SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect | |
34 | + SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver | |
35 | + SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard | |
36 | + SPRING_DATASOURCE_USERNAME: postgres | |
37 | + SPRING_DATASOURCE_PASSWORD: postgres | |
38 | + depends_on: | |
39 | + - kafka | |
40 | + - postgres | ... | ... |
... | ... | @@ -14,40 +14,167 @@ |
14 | 14 | # limitations under the License. |
15 | 15 | # |
16 | 16 | |
17 | -version: '2' | |
17 | + | |
18 | +version: '2.2' | |
18 | 19 | |
19 | 20 | services: |
21 | + zookeeper: | |
22 | + restart: always | |
23 | + image: "wurstmeister/zookeeper" | |
24 | + ports: | |
25 | + - "2181" | |
26 | + kafka: | |
27 | + restart: always | |
28 | + image: "wurstmeister/kafka" | |
29 | + ports: | |
30 | + - "9092:9092" | |
31 | + environment: | |
32 | + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 | |
33 | + KAFKA_LISTENERS: INSIDE://:9093,OUTSIDE://:9092 | |
34 | + KAFKA_ADVERTISED_LISTENERS: INSIDE://:9093,OUTSIDE://kafka:9092 | |
35 | + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT | |
36 | + KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE | |
37 | + KAFKA_CREATE_TOPICS: "${KAFKA_TOPICS}" | |
38 | + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false' | |
39 | + KAFKA_LOG_RETENTION_BYTES: 1073741824 | |
40 | + KAFKA_LOG_SEGMENT_BYTES: 268435456 | |
41 | + KAFKA_LOG_RETENTION_MS: 300000 | |
42 | + KAFKA_LOG_CLEANUP_POLICY: delete | |
43 | + depends_on: | |
44 | + - zookeeper | |
45 | + tb-js-executor: | |
46 | + restart: always | |
47 | + image: "${DOCKER_REPO}/${JS_EXECUTOR_DOCKER_NAME}:${TB_VERSION}" | |
48 | + scale: 20 | |
49 | + environment: | |
50 | + TB_KAFKA_SERVERS: kafka:9092 | |
51 | + env_file: | |
52 | + - tb-js-executor.env | |
53 | + depends_on: | |
54 | + - kafka | |
20 | 55 | tb: |
21 | - image: "thingsboard/application:2.1.0" | |
56 | + restart: always | |
57 | + image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}" | |
22 | 58 | ports: |
23 | - - "8080:8080" | |
24 | - - "1883:1883" | |
25 | - - "5683:5683/udp" | |
59 | + - "8080" | |
60 | + logging: | |
61 | + driver: "json-file" | |
62 | + options: | |
63 | + max-size: "200m" | |
64 | + max-file: "30" | |
26 | 65 | env_file: |
27 | - - tb.env | |
66 | + - tb-node.env | |
28 | 67 | environment: |
29 | - - ADD_SCHEMA_AND_SYSTEM_DATA=${ADD_SCHEMA_AND_SYSTEM_DATA} | |
30 | - - ADD_DEMO_DATA=${ADD_DEMO_DATA} | |
68 | + ZOOKEEPER_URL: zk:2181 | |
69 | + TB_KAFKA_SERVERS: kafka:9092 | |
70 | + JS_EVALUATOR: remote | |
71 | + DATABASE_TS_TYPE: sql | |
72 | + DATABASE_ENTITIES_TYPE: sql | |
73 | + SQL_DATA_FOLDER: /usr/share/thingsboard/data/db | |
31 | 74 | volumes: |
32 | - - "${HSQLDB_DATA_DIR}:/usr/share/thingsboard/data/sql" | |
33 | - entrypoint: /run-application.sh | |
34 | - cassandra: | |
35 | - image: "cassandra:3.11.2" | |
75 | + - ./tb-node/db:/usr/share/thingsboard/data/db | |
76 | + - ./tb-node/conf:/config | |
77 | + - ./tb-node/log:/var/log/thingsboard | |
78 | + depends_on: | |
79 | + - kafka | |
80 | + tb-mqtt-transport1: | |
81 | + restart: always | |
82 | + image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
36 | 83 | ports: |
37 | - - "9042" | |
38 | - - "9160" | |
39 | - volumes: | |
40 | - - "${CASSANDRA_DATA_DIR}:/var/lib/cassandra" | |
41 | - zk: | |
42 | - image: "zookeeper:3.4.10" | |
84 | + - "1883" | |
85 | + environment: | |
86 | + TB_KAFKA_SERVERS: kafka:9092 | |
87 | + env_file: | |
88 | + - tb-mqtt-transport.env | |
89 | + depends_on: | |
90 | + - kafka | |
91 | + tb-mqtt-transport2: | |
92 | + restart: always | |
93 | + image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
43 | 94 | ports: |
44 | - - "2181" | |
95 | + - "1883" | |
96 | + environment: | |
97 | + TB_KAFKA_SERVERS: kafka:9092 | |
98 | + env_file: | |
99 | + - tb-mqtt-transport.env | |
100 | + depends_on: | |
101 | + - kafka | |
102 | + tb-http-transport1: | |
45 | 103 | restart: always |
46 | - postgres: | |
47 | - image: "postgres:9.6" | |
104 | + image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
48 | 105 | ports: |
49 | - - "5432" | |
106 | + - "8081" | |
50 | 107 | environment: |
51 | - - POSTGRES_DB=${POSTGRES_DB} | |
108 | + TB_KAFKA_SERVERS: kafka:9092 | |
109 | + env_file: | |
110 | + - tb-http-transport.env | |
111 | + depends_on: | |
112 | + - kafka | |
113 | + tb-http-transport2: | |
114 | + restart: always | |
115 | + image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
116 | + ports: | |
117 | + - "8081" | |
118 | + environment: | |
119 | + TB_KAFKA_SERVERS: kafka:9092 | |
120 | + env_file: | |
121 | + - tb-http-transport.env | |
122 | + depends_on: | |
123 | + - kafka | |
124 | + tb-coap-transport: | |
125 | + restart: always | |
126 | + image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
127 | + ports: | |
128 | + - "5683:5683/udp" | |
129 | + environment: | |
130 | + TB_KAFKA_SERVERS: kafka:9092 | |
131 | + env_file: | |
132 | + - tb-coap-transport.env | |
133 | + depends_on: | |
134 | + - kafka | |
135 | + tb-web-ui1: | |
136 | + restart: always | |
137 | + image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" | |
138 | + ports: | |
139 | + - "8080" | |
140 | + environment: | |
141 | + TB_HOST: tb | |
142 | + TB_PORT: 8080 | |
143 | + env_file: | |
144 | + - tb-web-ui.env | |
145 | + tb-web-ui2: | |
146 | + restart: always | |
147 | + image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" | |
148 | + ports: | |
149 | + - "8080" | |
150 | + environment: | |
151 | + TB_HOST: tb | |
152 | + TB_PORT: 8080 | |
153 | + env_file: | |
154 | + - tb-web-ui.env | |
155 | + web: | |
156 | + restart: always | |
157 | + container_name: haproxy-certbot | |
158 | + image: nmarus/haproxy-certbot | |
52 | 159 | volumes: |
53 | - - "${POSTGRES_DATA_DIR}:/var/lib/postgresql/data" | |
160 | + - ./haproxy/config:/config | |
161 | + - ./haproxy/letsencrypt:/etc/letsencrypt | |
162 | + - ./haproxy/certs.d:/usr/local/etc/haproxy/certs.d | |
163 | + ports: | |
164 | + - "80:80" | |
165 | + - "443:443" | |
166 | + - "1883:1883" | |
167 | + - "9999:9999" | |
168 | + cap_add: | |
169 | + - NET_ADMIN | |
170 | + environment: | |
171 | + HTTP_PORT: 80 | |
172 | + HTTPS_PORT: 443 | |
173 | + MQTT_PORT: 1883 | |
174 | + links: | |
175 | + - tb-web-ui1 | |
176 | + - tb-web-ui2 | |
177 | + - tb-mqtt-transport1 | |
178 | + - tb-mqtt-transport2 | |
179 | + - tb-http-transport1 | |
180 | + - tb-http-transport2 | ... | ... |
docker/docker-install-tb.sh
renamed from
msa/docker/docker-install-tb.sh
... | ... | @@ -39,6 +39,18 @@ else |
39 | 39 | loadDemo=false |
40 | 40 | fi |
41 | 41 | |
42 | -docker-compose run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=${loadDemo} tb | |
42 | +set -e | |
43 | + | |
44 | +source compose-utils.sh | |
45 | + | |
46 | +ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? | |
47 | + | |
48 | +ADDITIONAL_STARTUP_SERVICES=$(additionalStartupServices) || exit $? | |
49 | + | |
50 | +if [ ! -z "${ADDITIONAL_STARTUP_SERVICES// }" ]; then | |
51 | + docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS up -d $ADDITIONAL_STARTUP_SERVICES | |
52 | +fi | |
53 | + | |
54 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=${loadDemo} tb | |
43 | 55 | |
44 | 56 | ... | ... |
docker/docker-remove-services.sh
renamed from
docker/cassandra-setup/Dockerfile
100644 → 100755
1 | +#!/bin/bash | |
1 | 2 | # |
2 | 3 | # Copyright © 2016-2018 The Thingsboard Authors |
3 | 4 | # |
... | ... | @@ -14,11 +15,10 @@ |
14 | 15 | # limitations under the License. |
15 | 16 | # |
16 | 17 | |
17 | -FROM openjdk:8-jre | |
18 | +set -e | |
18 | 19 | |
19 | -ADD install.sh /install.sh | |
20 | -ADD thingsboard.deb /thingsboard.deb | |
20 | +source compose-utils.sh | |
21 | 21 | |
22 | -RUN apt-get update \ | |
23 | - && apt-get install -y nmap \ | |
24 | - && chmod +x /install.sh | |
22 | +ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? | |
23 | + | |
24 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS down -v | ... | ... |
docker/docker-start-services.sh
renamed from
docker/cassandra-upgrade/upgrade.sh
... | ... | @@ -15,14 +15,12 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | +./check-dirs.sh | |
18 | 19 | |
19 | -dpkg -i /thingsboard.deb | |
20 | +set -e | |
20 | 21 | |
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 | |
22 | +source compose-utils.sh | |
26 | 23 | |
27 | -echo "Upgrading 'Thingsboard' schema..." | |
28 | -/usr/share/thingsboard/bin/install/upgrade.sh --fromVersion=$UPGRADE_FROM_VERSION | |
24 | +ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? | |
25 | + | |
26 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS up -d | ... | ... |
docker/docker-stop-services.sh
renamed from
docker/cassandra-upgrade/Dockerfile
100644 → 100755
1 | +#!/bin/bash | |
1 | 2 | # |
2 | 3 | # Copyright © 2016-2018 The Thingsboard Authors |
3 | 4 | # |
... | ... | @@ -14,11 +15,10 @@ |
14 | 15 | # limitations under the License. |
15 | 16 | # |
16 | 17 | |
17 | -FROM openjdk:8-jre | |
18 | +set -e | |
18 | 19 | |
19 | -ADD upgrade.sh /upgrade.sh | |
20 | -ADD thingsboard.deb /thingsboard.deb | |
20 | +source compose-utils.sh | |
21 | 21 | |
22 | -RUN apt-get update \ | |
23 | - && apt-get install -y nmap \ | |
24 | - && chmod +x /upgrade.sh | |
22 | +ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? | |
23 | + | |
24 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS stop | ... | ... |
docker/docker-update-service.sh
renamed from
docker/tb/Dockerfile
100644 → 100755
1 | +#!/bin/bash | |
1 | 2 | # |
2 | 3 | # Copyright © 2016-2018 The Thingsboard Authors |
3 | 4 | # |
... | ... | @@ -14,13 +15,11 @@ |
14 | 15 | # limitations under the License. |
15 | 16 | # |
16 | 17 | |
17 | -FROM openjdk:8-jre | |
18 | +set -e | |
18 | 19 | |
19 | -ADD run-application.sh /run-application.sh | |
20 | -ADD thingsboard.deb /thingsboard.deb | |
20 | +source compose-utils.sh | |
21 | 21 | |
22 | -RUN apt-get update \ | |
23 | - && apt-get install --no-install-recommends -y nmap \ | |
24 | - && apt-get clean \ | |
25 | - && rm -r /var/lib/apt/lists/* \ | |
26 | - && chmod +x /run-application.sh | |
22 | +ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? | |
23 | + | |
24 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS pull $@ | |
25 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS up -d --no-deps --build $@ | ... | ... |
docker/docker-upgrade-tb.sh
renamed from
msa/docker/docker-upgrade-tb.sh
... | ... | @@ -38,4 +38,16 @@ else |
38 | 38 | fromVersion="${FROM_VERSION// }" |
39 | 39 | fi |
40 | 40 | |
41 | -docker-compose run --no-deps --rm -e UPGRADE_TB=true -e FROM_VERSION=${fromVersion} tb | |
41 | +set -e | |
42 | + | |
43 | +source compose-utils.sh | |
44 | + | |
45 | +ADDITIONAL_COMPOSE_ARGS=$(additionalComposeArgs) || exit $? | |
46 | + | |
47 | +ADDITIONAL_STARTUP_SERVICES=$(additionalStartupServices) || exit $? | |
48 | + | |
49 | +if [ ! -z "${ADDITIONAL_STARTUP_SERVICES// }" ]; then | |
50 | + docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS up -d $ADDITIONAL_STARTUP_SERVICES | |
51 | +fi | |
52 | + | |
53 | +docker-compose -f docker-compose.yml $ADDITIONAL_COMPOSE_ARGS run --no-deps --rm -e UPGRADE_TB=true -e FROM_VERSION=${fromVersion} tb | ... | ... |
docker/haproxy/config/haproxy.cfg
renamed from
msa/docker/haproxy/config/haproxy.cfg
docker/k8s/cassandra-setup.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | -apiVersion: v1 | |
18 | -kind: Pod | |
19 | -metadata: | |
20 | - name: cassandra-setup | |
21 | -spec: | |
22 | - containers: | |
23 | - - name: cassandra-setup | |
24 | - imagePullPolicy: Always | |
25 | - image: thingsboard/cassandra-setup:2.1.0 | |
26 | - env: | |
27 | - - name: ADD_DEMO_DATA | |
28 | - value: "true" | |
29 | - - name : CASSANDRA_HOST | |
30 | - value: "cassandra-headless" | |
31 | - - name : CASSANDRA_PORT | |
32 | - value: "9042" | |
33 | - - name : DATABASE_ENTITIES_TYPE | |
34 | - value: "cassandra" | |
35 | - - name : DATABASE_TS_TYPE | |
36 | - value: "cassandra" | |
37 | - - name : CASSANDRA_URL | |
38 | - value: "cassandra-headless:9042" | |
39 | - command: | |
40 | - - sh | |
41 | - - -c | |
42 | - - /install.sh | |
43 | - restartPolicy: Never |
docker/k8s/cassandra-upgrade.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | -apiVersion: v1 | |
18 | -kind: Pod | |
19 | -metadata: | |
20 | - name: cassandra-upgrade | |
21 | -spec: | |
22 | - containers: | |
23 | - - name: cassandra-upgrade | |
24 | - imagePullPolicy: Always | |
25 | - image: thingsboard/cassandra-upgrade:2.1.0 | |
26 | - env: | |
27 | - - name: ADD_DEMO_DATA | |
28 | - value: "true" | |
29 | - - name : CASSANDRA_HOST | |
30 | - value: "cassandra-headless" | |
31 | - - name : CASSANDRA_PORT | |
32 | - value: "9042" | |
33 | - - name : DATABASE_ENTITIES_TYPE | |
34 | - value: "cassandra" | |
35 | - - name : DATABASE_TS_TYPE | |
36 | - value: "cassandra" | |
37 | - - name : CASSANDRA_URL | |
38 | - value: "cassandra-headless:9042" | |
39 | - - name : UPGRADE_FROM_VERSION | |
40 | - value: "1.4.0" | |
41 | - command: | |
42 | - - sh | |
43 | - - -c | |
44 | - - /upgrade.sh | |
45 | - restartPolicy: Never |
docker/k8s/cassandra.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | -apiVersion: v1 | |
18 | -kind: Service | |
19 | -metadata: | |
20 | - name: cassandra-headless | |
21 | - labels: | |
22 | - app: cassandra-headless | |
23 | -spec: | |
24 | - ports: | |
25 | - - port: 9042 | |
26 | - name: cql | |
27 | - clusterIP: None | |
28 | - selector: | |
29 | - app: cassandra | |
30 | ---- | |
31 | -apiVersion: "apps/v1beta1" | |
32 | -kind: StatefulSet | |
33 | -metadata: | |
34 | - name: cassandra | |
35 | -spec: | |
36 | - serviceName: cassandra-headless | |
37 | - replicas: 2 | |
38 | - template: | |
39 | - metadata: | |
40 | - labels: | |
41 | - app: cassandra | |
42 | - spec: | |
43 | - nodeSelector: | |
44 | - machinetype: other | |
45 | - affinity: | |
46 | - podAntiAffinity: | |
47 | - requiredDuringSchedulingIgnoredDuringExecution: | |
48 | - - labelSelector: | |
49 | - matchExpressions: | |
50 | - - key: "app" | |
51 | - operator: In | |
52 | - values: | |
53 | - - cassandra-headless | |
54 | - topologyKey: "kubernetes.io/hostname" | |
55 | - containers: | |
56 | - - name: cassandra | |
57 | - image: thingsboard/cassandra:2.1.0 | |
58 | - imagePullPolicy: Always | |
59 | - ports: | |
60 | - - containerPort: 7000 | |
61 | - name: intra-node | |
62 | - - containerPort: 7001 | |
63 | - name: tls-intra-node | |
64 | - - containerPort: 7199 | |
65 | - name: jmx | |
66 | - - containerPort: 9042 | |
67 | - name: cql | |
68 | - - containerPort: 9160 | |
69 | - name: thrift | |
70 | - securityContext: | |
71 | - capabilities: | |
72 | - add: | |
73 | - - IPC_LOCK | |
74 | - lifecycle: | |
75 | - preStop: | |
76 | - exec: | |
77 | - command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"] | |
78 | - env: | |
79 | - - name: MAX_HEAP_SIZE | |
80 | - value: 2048M | |
81 | - - name: HEAP_NEWSIZE | |
82 | - value: 100M | |
83 | - - name: CASSANDRA_SEEDS | |
84 | - value: "cassandra-0.cassandra-headless.default.svc.cluster.local" | |
85 | - - name: CASSANDRA_CLUSTER_NAME | |
86 | - value: "Thingsboard-Cluster" | |
87 | - - name: CASSANDRA_DC | |
88 | - value: "DC1-Thingsboard-Cluster" | |
89 | - - name: CASSANDRA_RACK | |
90 | - value: "Rack-Thingsboard-Cluster" | |
91 | - - name: CASSANDRA_AUTO_BOOTSTRAP | |
92 | - value: "false" | |
93 | - - name: POD_IP | |
94 | - valueFrom: | |
95 | - fieldRef: | |
96 | - fieldPath: status.podIP | |
97 | - - name: POD_NAMESPACE | |
98 | - valueFrom: | |
99 | - fieldRef: | |
100 | - fieldPath: metadata.namespace | |
101 | - readinessProbe: | |
102 | - exec: | |
103 | - command: | |
104 | - - /bin/bash | |
105 | - - -c | |
106 | - - /ready-probe.sh | |
107 | - initialDelaySeconds: 15 | |
108 | - timeoutSeconds: 5 | |
109 | - volumeMounts: | |
110 | - - name: cassandra-data | |
111 | - mountPath: /var/lib/cassandra/data | |
112 | - - name: cassandra-commitlog | |
113 | - mountPath: /var/lib/cassandra/commitlog | |
114 | - volumeClaimTemplates: | |
115 | - - metadata: | |
116 | - name: cassandra-data | |
117 | - annotations: | |
118 | - volume.beta.kubernetes.io/storage-class: fast | |
119 | - spec: | |
120 | - accessModes: [ "ReadWriteOnce" ] | |
121 | - resources: | |
122 | - requests: | |
123 | - storage: 3Gi | |
124 | - - metadata: | |
125 | - name: cassandra-commitlog | |
126 | - annotations: | |
127 | - volume.beta.kubernetes.io/storage-class: fast | |
128 | - spec: | |
129 | - accessModes: [ "ReadWriteOnce" ] | |
130 | - resources: | |
131 | - requests: | |
132 | - storage: 2Gi | |
\ No newline at end of file |
docker/k8s/common.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | ---- | |
18 | -apiVersion: storage.k8s.io/v1beta1 | |
19 | -kind: StorageClass | |
20 | -metadata: | |
21 | - name: slow | |
22 | -provisioner: kubernetes.io/gce-pd | |
23 | -parameters: | |
24 | - type: pd-standard | |
25 | ---- | |
26 | -apiVersion: storage.k8s.io/v1beta1 | |
27 | -kind: StorageClass | |
28 | -metadata: | |
29 | - name: fast | |
30 | -provisioner: kubernetes.io/gce-pd | |
31 | -parameters: | |
32 | - type: pd-ssd | |
33 | ---- | |
\ No newline at end of file |
docker/k8s/redis.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | ---- | |
18 | -apiVersion: v1 | |
19 | -kind: Service | |
20 | -metadata: | |
21 | - labels: | |
22 | - name: redis-service | |
23 | - name: redis-service | |
24 | -spec: | |
25 | - ports: | |
26 | - - name: redis-service | |
27 | - protocol: TCP | |
28 | - port: 6379 | |
29 | - targetPort: 6379 | |
30 | - selector: | |
31 | - app: redis | |
32 | ---- | |
33 | -apiVersion: v1 | |
34 | -kind: ConfigMap | |
35 | -metadata: | |
36 | - name: redis-conf | |
37 | -data: | |
38 | - redis.conf: | | |
39 | - appendonly yes | |
40 | - protected-mode no | |
41 | - bind 0.0.0.0 | |
42 | - port 6379 | |
43 | - dir /var/lib/redis | |
44 | ---- | |
45 | -apiVersion: apps/v1beta1 | |
46 | -kind: StatefulSet | |
47 | -metadata: | |
48 | - name: redis | |
49 | -spec: | |
50 | - serviceName: redis-service | |
51 | - replicas: 1 | |
52 | - template: | |
53 | - metadata: | |
54 | - labels: | |
55 | - app: redis | |
56 | - spec: | |
57 | - terminationGracePeriodSeconds: 10 | |
58 | - containers: | |
59 | - - name: redis | |
60 | - image: redis:4.0.9 | |
61 | - command: | |
62 | - - redis-server | |
63 | - args: | |
64 | - - /etc/redis/redis.conf | |
65 | - resources: | |
66 | - requests: | |
67 | - cpu: 100m | |
68 | - memory: 100Mi | |
69 | - ports: | |
70 | - - containerPort: 6379 | |
71 | - name: redis | |
72 | - volumeMounts: | |
73 | - - name: redis-data | |
74 | - mountPath: /var/lib/redis | |
75 | - - name: redis-conf | |
76 | - mountPath: /etc/redis | |
77 | - volumes: | |
78 | - - name: redis-conf | |
79 | - configMap: | |
80 | - name: redis-conf | |
81 | - items: | |
82 | - - key: redis.conf | |
83 | - path: redis.conf | |
84 | - volumeClaimTemplates: | |
85 | - - metadata: | |
86 | - name: redis-data | |
87 | - annotations: | |
88 | - volume.beta.kubernetes.io/storage-class: fast | |
89 | - spec: | |
90 | - accessModes: [ "ReadWriteOnce" ] | |
91 | - resources: | |
92 | - requests: | |
93 | - storage: 1Gi | |
\ No newline at end of file |
docker/k8s/tb.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | ---- | |
18 | -apiVersion: v1 | |
19 | -kind: Service | |
20 | -metadata: | |
21 | - name: tb-service | |
22 | - labels: | |
23 | - app: tb-service | |
24 | -spec: | |
25 | - ports: | |
26 | - - port: 8080 | |
27 | - name: ui | |
28 | - - port: 1883 | |
29 | - name: mqtt | |
30 | - - port: 5683 | |
31 | - name: coap | |
32 | - selector: | |
33 | - app: tb | |
34 | - type: LoadBalancer | |
35 | ---- | |
36 | -apiVersion: policy/v1beta1 | |
37 | -kind: PodDisruptionBudget | |
38 | -metadata: | |
39 | - name: tb-budget | |
40 | -spec: | |
41 | - selector: | |
42 | - matchLabels: | |
43 | - app: tb | |
44 | - minAvailable: 3 | |
45 | ---- | |
46 | -apiVersion: v1 | |
47 | -kind: ConfigMap | |
48 | -metadata: | |
49 | - name: tb-config | |
50 | -data: | |
51 | - zookeeper.enabled: "true" | |
52 | - zookeeper.url: "zk-headless" | |
53 | - cassandra.url: "cassandra-headless:9042" | |
54 | - cassandra.host: "cassandra-headless" | |
55 | - cassandra.port: "9042" | |
56 | - database.type: "cassandra" | |
57 | - cache.type: "redis" | |
58 | - redis.host: "redis-service" | |
59 | ---- | |
60 | -apiVersion: apps/v1beta1 | |
61 | -kind: StatefulSet | |
62 | -metadata: | |
63 | - name: tb | |
64 | -spec: | |
65 | - serviceName: "tb-service" | |
66 | - replicas: 3 | |
67 | - template: | |
68 | - metadata: | |
69 | - labels: | |
70 | - app: tb | |
71 | - spec: | |
72 | - nodeSelector: | |
73 | - machinetype: tb | |
74 | - affinity: | |
75 | - podAntiAffinity: | |
76 | - requiredDuringSchedulingIgnoredDuringExecution: | |
77 | - - labelSelector: | |
78 | - matchExpressions: | |
79 | - - key: "app" | |
80 | - operator: In | |
81 | - values: | |
82 | - - tb-service | |
83 | - topologyKey: "kubernetes.io/hostname" | |
84 | - containers: | |
85 | - - name: tb | |
86 | - imagePullPolicy: Always | |
87 | - image: thingsboard/application:2.1.0 | |
88 | - ports: | |
89 | - - containerPort: 8080 | |
90 | - name: ui | |
91 | - - containerPort: 1883 | |
92 | - name: mqtt | |
93 | - - containerPort: 5683 | |
94 | - name: coap | |
95 | - - containerPort: 9001 | |
96 | - name: rpc | |
97 | - env: | |
98 | - - name: ZOOKEEPER_ENABLED | |
99 | - valueFrom: | |
100 | - configMapKeyRef: | |
101 | - name: tb-config | |
102 | - key: zookeeper.enabled | |
103 | - - name: ZOOKEEPER_URL | |
104 | - valueFrom: | |
105 | - configMapKeyRef: | |
106 | - name: tb-config | |
107 | - key: zookeeper.url | |
108 | - - name : CASSANDRA_HOST | |
109 | - valueFrom: | |
110 | - configMapKeyRef: | |
111 | - name: tb-config | |
112 | - key: cassandra.host | |
113 | - - name : CASSANDRA_PORT | |
114 | - valueFrom: | |
115 | - configMapKeyRef: | |
116 | - name: tb-config | |
117 | - key: cassandra.port | |
118 | - - name : CASSANDRA_URL | |
119 | - valueFrom: | |
120 | - configMapKeyRef: | |
121 | - name: tb-config | |
122 | - key: cassandra.url | |
123 | - - name: DATABASE_ENTITIES_TYPE | |
124 | - valueFrom: | |
125 | - configMapKeyRef: | |
126 | - name: tb-config | |
127 | - key: database.type | |
128 | - - name: DATABASE_TS_TYPE | |
129 | - valueFrom: | |
130 | - configMapKeyRef: | |
131 | - name: tb-config | |
132 | - key: database.type | |
133 | - - name : RPC_HOST | |
134 | - valueFrom: | |
135 | - fieldRef: | |
136 | - fieldPath: status.podIP | |
137 | - - name: CACHE_TYPE | |
138 | - valueFrom: | |
139 | - configMapKeyRef: | |
140 | - name: tb-config | |
141 | - key: cache.type | |
142 | - - name: REDIS_HOST | |
143 | - valueFrom: | |
144 | - configMapKeyRef: | |
145 | - name: tb-config | |
146 | - key: redis.host | |
147 | - command: | |
148 | - - sh | |
149 | - - -c | |
150 | - - /run-application.sh | |
151 | - livenessProbe: | |
152 | - httpGet: | |
153 | - path: /login | |
154 | - port: ui-port | |
155 | - initialDelaySeconds: 120 | |
156 | - timeoutSeconds: 10 | |
\ No newline at end of file |
docker/k8s/zookeeper.yaml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | -apiVersion: v1 | |
18 | -kind: Service | |
19 | -metadata: | |
20 | - name: zk-headless | |
21 | - labels: | |
22 | - app: zk-headless | |
23 | -spec: | |
24 | - ports: | |
25 | - - port: 2888 | |
26 | - name: server | |
27 | - - port: 3888 | |
28 | - name: leader-election | |
29 | - clusterIP: None | |
30 | - selector: | |
31 | - app: zk | |
32 | ---- | |
33 | -apiVersion: v1 | |
34 | -kind: ConfigMap | |
35 | -metadata: | |
36 | - name: zk-config | |
37 | -data: | |
38 | - ensemble: "zk-0;zk-1;zk-2" | |
39 | - replicas: "3" | |
40 | - jvm.heap: "500m" | |
41 | - tick: "2000" | |
42 | - init: "10" | |
43 | - sync: "5" | |
44 | - client.cnxns: "60" | |
45 | - snap.retain: "3" | |
46 | - purge.interval: "1" | |
47 | - client.port: "2181" | |
48 | - server.port: "2888" | |
49 | - election.port: "3888" | |
50 | ---- | |
51 | -apiVersion: policy/v1beta1 | |
52 | -kind: PodDisruptionBudget | |
53 | -metadata: | |
54 | - name: zk-budget | |
55 | -spec: | |
56 | - selector: | |
57 | - matchLabels: | |
58 | - app: zk | |
59 | - minAvailable: 3 | |
60 | ---- | |
61 | -apiVersion: apps/v1beta1 | |
62 | -kind: StatefulSet | |
63 | -metadata: | |
64 | - name: zk | |
65 | -spec: | |
66 | - serviceName: zk-headless | |
67 | - replicas: 3 | |
68 | - template: | |
69 | - metadata: | |
70 | - labels: | |
71 | - app: zk | |
72 | - annotations: | |
73 | - pod.alpha.kubernetes.io/initialized: "true" | |
74 | - spec: | |
75 | - nodeSelector: | |
76 | - machinetype: other | |
77 | - affinity: | |
78 | - podAntiAffinity: | |
79 | - requiredDuringSchedulingIgnoredDuringExecution: | |
80 | - - labelSelector: | |
81 | - matchExpressions: | |
82 | - - key: "app" | |
83 | - operator: In | |
84 | - values: | |
85 | - - zk-headless | |
86 | - topologyKey: "kubernetes.io/hostname" | |
87 | - containers: | |
88 | - - name: zk | |
89 | - imagePullPolicy: Always | |
90 | - image: thingsboard/zk:2.1.0 | |
91 | - ports: | |
92 | - - containerPort: 2181 | |
93 | - name: client | |
94 | - - containerPort: 2888 | |
95 | - name: server | |
96 | - - containerPort: 3888 | |
97 | - name: leader-election | |
98 | - env: | |
99 | - - name : ZK_ENSEMBLE | |
100 | - valueFrom: | |
101 | - configMapKeyRef: | |
102 | - name: zk-config | |
103 | - key: ensemble | |
104 | - - name : ZK_REPLICAS | |
105 | - valueFrom: | |
106 | - configMapKeyRef: | |
107 | - name: zk-config | |
108 | - key: replicas | |
109 | - - name : ZK_HEAP_SIZE | |
110 | - valueFrom: | |
111 | - configMapKeyRef: | |
112 | - name: zk-config | |
113 | - key: jvm.heap | |
114 | - - name : ZK_TICK_TIME | |
115 | - valueFrom: | |
116 | - configMapKeyRef: | |
117 | - name: zk-config | |
118 | - key: tick | |
119 | - - name : ZK_INIT_LIMIT | |
120 | - valueFrom: | |
121 | - configMapKeyRef: | |
122 | - name: zk-config | |
123 | - key: init | |
124 | - - name : ZK_SYNC_LIMIT | |
125 | - valueFrom: | |
126 | - configMapKeyRef: | |
127 | - name: zk-config | |
128 | - key: tick | |
129 | - - name : ZK_MAX_CLIENT_CNXNS | |
130 | - valueFrom: | |
131 | - configMapKeyRef: | |
132 | - name: zk-config | |
133 | - key: client.cnxns | |
134 | - - name: ZK_SNAP_RETAIN_COUNT | |
135 | - valueFrom: | |
136 | - configMapKeyRef: | |
137 | - name: zk-config | |
138 | - key: snap.retain | |
139 | - - name: ZK_PURGE_INTERVAL | |
140 | - valueFrom: | |
141 | - configMapKeyRef: | |
142 | - name: zk-config | |
143 | - key: purge.interval | |
144 | - - name: ZK_CLIENT_PORT | |
145 | - valueFrom: | |
146 | - configMapKeyRef: | |
147 | - name: zk-config | |
148 | - key: client.port | |
149 | - - name: ZK_SERVER_PORT | |
150 | - valueFrom: | |
151 | - configMapKeyRef: | |
152 | - name: zk-config | |
153 | - key: server.port | |
154 | - - name: ZK_ELECTION_PORT | |
155 | - valueFrom: | |
156 | - configMapKeyRef: | |
157 | - name: zk-config | |
158 | - key: election.port | |
159 | - command: | |
160 | - - sh | |
161 | - - -c | |
162 | - - zk-gen-config.sh && zkServer.sh start-foreground | |
163 | - readinessProbe: | |
164 | - exec: | |
165 | - command: | |
166 | - - "zk-ok.sh" | |
167 | - initialDelaySeconds: 15 | |
168 | - timeoutSeconds: 5 | |
169 | - livenessProbe: | |
170 | - exec: | |
171 | - command: | |
172 | - - "zk-ok.sh" | |
173 | - initialDelaySeconds: 15 | |
174 | - timeoutSeconds: 5 | |
175 | - volumeMounts: | |
176 | - - name: zkdatadir | |
177 | - mountPath: /var/lib/zookeeper | |
178 | - securityContext: | |
179 | - runAsUser: 1000 | |
180 | - fsGroup: 1000 | |
181 | - volumeClaimTemplates: | |
182 | - - metadata: | |
183 | - name: zkdatadir | |
184 | - annotations: | |
185 | - volume.beta.kubernetes.io/storage-class: slow | |
186 | - spec: | |
187 | - accessModes: [ "ReadWriteOnce" ] | |
188 | - resources: | |
189 | - requests: | |
190 | - storage: 1Gi | |
\ No newline at end of file |
docker/tb-coap-transport.env
renamed from
msa/docker/tb-coap-transport.env
docker/tb-http-transport.env
renamed from
msa/docker/tb-http-transport.env
docker/tb-js-executor.env
renamed from
msa/docker/tb-js-executor.env
docker/tb-mqtt-transport.env
renamed from
msa/docker/tb-mqtt-transport.env
docker/tb-node.env
0 → 100644
docker/tb-node/conf/logback.xml
renamed from
msa/docker/tb-node/conf/logback.xml
docker/tb-node/conf/thingsboard.conf
renamed from
msa/docker/tb-node/conf/thingsboard.conf
docker/tb-web-ui.env
renamed from
msa/docker/tb-web-ui.env
docker/tb.env
deleted
100644 → 0
1 | -#Thingsboard server configuration | |
2 | -MQTT_BIND_ADDRESS=0.0.0.0 | |
3 | -MQTT_BIND_PORT=1883 | |
4 | -COAP_BIND_ADDRESS=0.0.0.0 | |
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_TS_TYPE=sql | |
12 | -DATABASE_ENTITIES_TYPE=sql | |
13 | - | |
14 | -# cassandra db config | |
15 | -CASSANDRA_URL=cassandra:9042 | |
16 | -CASSANDRA_HOST=cassandra | |
17 | -CASSANDRA_PORT=9042 | |
18 | - | |
19 | -# postgres db config | |
20 | -POSTGRES_HOST=postgres | |
21 | -POSTGRES_PORT=5432 | |
22 | -# SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect | |
23 | -# SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver | |
24 | -# SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard | |
25 | -# SPRING_DATASOURCE_USERNAME=postgres | |
26 | -# SPRING_DATASOURCE_PASSWORD=postgres |
docker/tb/Makefile
deleted
100644 → 0
1 | -VERSION=2.1.0 | |
2 | -PROJECT=thingsboard | |
3 | -APP=application | |
4 | - | |
5 | -build: | |
6 | - cp ../../application/target/thingsboard.deb . | |
7 | - docker build --pull -t ${PROJECT}/${APP}:${VERSION} -t ${PROJECT}/${APP}:latest . | |
8 | - rm thingsboard.deb | |
9 | - | |
10 | -push: build | |
11 | - docker push ${PROJECT}/${APP}:${VERSION} | |
12 | - docker push ${PROJECT}/${APP}:latest |
docker/tb/run-application.sh
deleted
100755 → 0
1 | -#!/bin/bash | |
2 | -# | |
3 | -# Copyright © 2016-2018 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 | -dpkg -i /thingsboard.deb | |
20 | - | |
21 | -# Copying env variables into conf files | |
22 | -printenv | awk -F "=" '{print "export " $1 "='\''" $2 "'\''"}' >> /usr/share/thingsboard/conf/thingsboard.conf | |
23 | - | |
24 | -cat /usr/share/thingsboard/conf/thingsboard.conf | |
25 | - | |
26 | -if [ "$DATABASE_ENTITIES_TYPE" == "cassandra" ]; then | |
27 | - until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open\|filtered" | |
28 | - do | |
29 | - echo "Wait for cassandra db to start..." | |
30 | - sleep 10 | |
31 | - done | |
32 | -fi | |
33 | - | |
34 | -if [ "$DATABASE_ENTITIES_TYPE" == "sql" ]; then | |
35 | - if [ "$SPRING_DRIVER_CLASS_NAME" == "org.postgresql.Driver" ]; then | |
36 | - until nmap $POSTGRES_HOST -p $POSTGRES_PORT | grep "$POSTGRES_PORT/tcp open" | |
37 | - do | |
38 | - echo "Waiting for postgres db to start..." | |
39 | - sleep 10 | |
40 | - done | |
41 | - fi | |
42 | -fi | |
43 | - | |
44 | -if [ "$ADD_SCHEMA_AND_SYSTEM_DATA" == "true" ]; then | |
45 | - echo "Creating 'Thingsboard' schema and system data..." | |
46 | - if [ "$ADD_DEMO_DATA" == "true" ]; then | |
47 | - echo "plus demo data..." | |
48 | - /usr/share/thingsboard/bin/install/install.sh --loadDemo | |
49 | - elif [ "$ADD_DEMO_DATA" == "false" ]; then | |
50 | - /usr/share/thingsboard/bin/install/install.sh | |
51 | - fi | |
52 | -fi | |
53 | - | |
54 | -echo "Starting 'Thingsboard' service..." | |
55 | -service thingsboard start | |
56 | - | |
57 | -# Wait until log file is created | |
58 | -sleep 10 | |
59 | -tail -f /var/log/thingsboard/thingsboard.log |
docker/zookeeper/Dockerfile
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | -FROM ubuntu:16.04 | |
18 | -ENV ZK_USER=zookeeper \ | |
19 | -ZK_DATA_DIR=/var/lib/zookeeper/data \ | |
20 | -ZK_DATA_LOG_DIR=/var/lib/zookeeper/log \ | |
21 | -ZK_LOG_DIR=/var/log/zookeeper \ | |
22 | -JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 | |
23 | - | |
24 | -ARG GPG_KEY=C823E3E5B12AF29C67F81976F5CECB3CB5E9BD2D | |
25 | -ARG ZK_DIST=zookeeper-3.4.10 | |
26 | -RUN set -x \ | |
27 | - && apt-get update \ | |
28 | - && apt-get install -y openjdk-8-jre-headless wget netcat-openbsd \ | |
29 | - && wget -q "http://www.apache.org/dist/zookeeper/$ZK_DIST/$ZK_DIST.tar.gz" \ | |
30 | - && wget -q "http://www.apache.org/dist/zookeeper/$ZK_DIST/$ZK_DIST.tar.gz.asc" \ | |
31 | - && export GNUPGHOME="$(mktemp -d)" \ | |
32 | - && gpg --keyserver ha.pool.sks-keyservers.net --recv-key "$GPG_KEY" \ | |
33 | - && gpg --batch --verify "$ZK_DIST.tar.gz.asc" "$ZK_DIST.tar.gz" \ | |
34 | - && tar -xzf "$ZK_DIST.tar.gz" -C /opt \ | |
35 | - && rm -r "$GNUPGHOME" "$ZK_DIST.tar.gz" "$ZK_DIST.tar.gz.asc" \ | |
36 | - && ln -s /opt/$ZK_DIST /opt/zookeeper \ | |
37 | - && rm -rf /opt/zookeeper/CHANGES.txt \ | |
38 | - /opt/zookeeper/README.txt \ | |
39 | - /opt/zookeeper/NOTICE.txt \ | |
40 | - /opt/zookeeper/CHANGES.txt \ | |
41 | - /opt/zookeeper/README_packaging.txt \ | |
42 | - /opt/zookeeper/build.xml \ | |
43 | - /opt/zookeeper/config \ | |
44 | - /opt/zookeeper/contrib \ | |
45 | - /opt/zookeeper/dist-maven \ | |
46 | - /opt/zookeeper/docs \ | |
47 | - /opt/zookeeper/ivy.xml \ | |
48 | - /opt/zookeeper/ivysettings.xml \ | |
49 | - /opt/zookeeper/recipes \ | |
50 | - /opt/zookeeper/src \ | |
51 | - /opt/zookeeper/$ZK_DIST.jar.asc \ | |
52 | - /opt/zookeeper/$ZK_DIST.jar.md5 \ | |
53 | - /opt/zookeeper/$ZK_DIST.jar.sha1 \ | |
54 | - && apt-get autoremove -y wget \ | |
55 | - && rm -rf /var/lib/apt/lists/* | |
56 | - | |
57 | -#Copy configuration generator script to bin | |
58 | -COPY zk-gen-config.sh zk-ok.sh /opt/zookeeper/bin/ | |
59 | - | |
60 | -# Create a user for the zookeeper process and configure file system ownership | |
61 | -# for nessecary directories and symlink the distribution as a user executable | |
62 | -RUN set -x \ | |
63 | - && useradd $ZK_USER \ | |
64 | - && [ `id -u $ZK_USER` -eq 1000 ] \ | |
65 | - && [ `id -g $ZK_USER` -eq 1000 ] \ | |
66 | - && mkdir -p $ZK_DATA_DIR $ZK_DATA_LOG_DIR $ZK_LOG_DIR /usr/share/zookeeper /tmp/zookeeper /usr/etc/ \ | |
67 | - && chown -R "$ZK_USER:$ZK_USER" /opt/$ZK_DIST $ZK_DATA_DIR $ZK_LOG_DIR $ZK_DATA_LOG_DIR /tmp/zookeeper \ | |
68 | - && ln -s /opt/zookeeper/conf/ /usr/etc/zookeeper \ | |
69 | - && ln -s /opt/zookeeper/bin/* /usr/bin \ | |
70 | - && ln -s /opt/zookeeper/$ZK_DIST.jar /usr/share/zookeeper/ \ | |
71 | - && ln -s /opt/zookeeper/lib/* /usr/share/zookeeper |
docker/zookeeper/Makefile
deleted
100644 → 0
docker/zookeeper/zk-gen-config.sh
deleted
100755 → 0
1 | -#!/usr/bin/env bash | |
2 | -# | |
3 | -# Copyright © 2016-2018 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 | -ZK_USER=${ZK_USER:-"zookeeper"} | |
19 | -ZK_LOG_LEVEL=${ZK_LOG_LEVEL:-"INFO"} | |
20 | -ZK_DATA_DIR=${ZK_DATA_DIR:-"/var/lib/zookeeper/data"} | |
21 | -ZK_DATA_LOG_DIR=${ZK_DATA_LOG_DIR:-"/var/lib/zookeeper/log"} | |
22 | -ZK_LOG_DIR=${ZK_LOG_DIR:-"var/log/zookeeper"} | |
23 | -ZK_CONF_DIR=${ZK_CONF_DIR:-"/opt/zookeeper/conf"} | |
24 | -ZK_CLIENT_PORT=${ZK_CLIENT_PORT:-2181} | |
25 | -ZK_SERVER_PORT=${ZK_SERVER_PORT:-2888} | |
26 | -ZK_ELECTION_PORT=${ZK_ELECTION_PORT:-3888} | |
27 | -ZK_TICK_TIME=${ZK_TICK_TIME:-2000} | |
28 | -ZK_INIT_LIMIT=${ZK_INIT_LIMIT:-10} | |
29 | -ZK_SYNC_LIMIT=${ZK_SYNC_LIMIT:-5} | |
30 | -ZK_HEAP_SIZE=${ZK_HEAP_SIZE:-2G} | |
31 | -ZK_MAX_CLIENT_CNXNS=${ZK_MAX_CLIENT_CNXNS:-60} | |
32 | -ZK_MIN_SESSION_TIMEOUT=${ZK_MIN_SESSION_TIMEOUT:- $((ZK_TICK_TIME*2))} | |
33 | -ZK_MAX_SESSION_TIMEOUT=${ZK_MAX_SESSION_TIMEOUT:- $((ZK_TICK_TIME*20))} | |
34 | -ZK_SNAP_RETAIN_COUNT=${ZK_SNAP_RETAIN_COUNT:-3} | |
35 | -ZK_PURGE_INTERVAL=${ZK_PURGE_INTERVAL:-0} | |
36 | -ID_FILE="$ZK_DATA_DIR/myid" | |
37 | -ZK_CONFIG_FILE="$ZK_CONF_DIR/zoo.cfg" | |
38 | -LOGGER_PROPS_FILE="$ZK_CONF_DIR/log4j.properties" | |
39 | -JAVA_ENV_FILE="$ZK_CONF_DIR/java.env" | |
40 | -HOST=`hostname -s` | |
41 | -DOMAIN=`hostname -d` | |
42 | - | |
43 | -function print_servers() { | |
44 | - for (( i=1; i<=$ZK_REPLICAS; i++ )) | |
45 | - do | |
46 | - echo "server.$i=$NAME-$((i-1)).$DOMAIN:$ZK_SERVER_PORT:$ZK_ELECTION_PORT" | |
47 | - done | |
48 | -} | |
49 | - | |
50 | -function validate_env() { | |
51 | - echo "Validating environment" | |
52 | - if [ -z $ZK_REPLICAS ]; then | |
53 | - echo "ZK_REPLICAS is a mandatory environment variable" | |
54 | - exit 1 | |
55 | - fi | |
56 | - | |
57 | - if [[ $HOST =~ (.*)-([0-9]+)$ ]]; then | |
58 | - NAME=${BASH_REMATCH[1]} | |
59 | - ORD=${BASH_REMATCH[2]} | |
60 | - else | |
61 | - echo "Failed to extract ordinal from hostname $HOST" | |
62 | - exit 1 | |
63 | - fi | |
64 | - MY_ID=$((ORD+1)) | |
65 | - echo "ZK_REPLICAS=$ZK_REPLICAS" | |
66 | - echo "MY_ID=$MY_ID" | |
67 | - echo "ZK_LOG_LEVEL=$ZK_LOG_LEVEL" | |
68 | - echo "ZK_DATA_DIR=$ZK_DATA_DIR" | |
69 | - echo "ZK_DATA_LOG_DIR=$ZK_DATA_LOG_DIR" | |
70 | - echo "ZK_LOG_DIR=$ZK_LOG_DIR" | |
71 | - echo "ZK_CLIENT_PORT=$ZK_CLIENT_PORT" | |
72 | - echo "ZK_SERVER_PORT=$ZK_SERVER_PORT" | |
73 | - echo "ZK_ELECTION_PORT=$ZK_ELECTION_PORT" | |
74 | - echo "ZK_TICK_TIME=$ZK_TICK_TIME" | |
75 | - echo "ZK_INIT_LIMIT=$ZK_INIT_LIMIT" | |
76 | - echo "ZK_SYNC_LIMIT=$ZK_SYNC_LIMIT" | |
77 | - echo "ZK_MAX_CLIENT_CNXNS=$ZK_MAX_CLIENT_CNXNS" | |
78 | - echo "ZK_MIN_SESSION_TIMEOUT=$ZK_MIN_SESSION_TIMEOUT" | |
79 | - echo "ZK_MAX_SESSION_TIMEOUT=$ZK_MAX_SESSION_TIMEOUT" | |
80 | - echo "ZK_HEAP_SIZE=$ZK_HEAP_SIZE" | |
81 | - echo "ZK_SNAP_RETAIN_COUNT=$ZK_SNAP_RETAIN_COUNT" | |
82 | - echo "ZK_PURGE_INTERVAL=$ZK_PURGE_INTERVAL" | |
83 | - echo "ENSEMBLE" | |
84 | - print_servers | |
85 | - echo "Environment validation successful" | |
86 | -} | |
87 | - | |
88 | -function create_config() { | |
89 | - rm -f $ZK_CONFIG_FILE | |
90 | - echo "Creating ZooKeeper configuration" | |
91 | - echo "#This file was autogenerated by zk DO NOT EDIT" >> $ZK_CONFIG_FILE | |
92 | - echo "clientPort=$ZK_CLIENT_PORT" >> $ZK_CONFIG_FILE | |
93 | - echo "dataDir=$ZK_DATA_DIR" >> $ZK_CONFIG_FILE | |
94 | - echo "dataLogDir=$ZK_DATA_LOG_DIR" >> $ZK_CONFIG_FILE | |
95 | - echo "tickTime=$ZK_TICK_TIME" >> $ZK_CONFIG_FILE | |
96 | - echo "initLimit=$ZK_INIT_LIMIT" >> $ZK_CONFIG_FILE | |
97 | - echo "syncLimit=$ZK_SYNC_LIMIT" >> $ZK_CONFIG_FILE | |
98 | - echo "maxClientCnxns=$ZK_MAX_CLIENT_CNXNS" >> $ZK_CONFIG_FILE | |
99 | - echo "minSessionTimeout=$ZK_MIN_SESSION_TIMEOUT" >> $ZK_CONFIG_FILE | |
100 | - echo "maxSessionTimeout=$ZK_MAX_SESSION_TIMEOUT" >> $ZK_CONFIG_FILE | |
101 | - echo "autopurge.snapRetainCount=$ZK_SNAP_RETAIN_COUNT" >> $ZK_CONFIG_FILE | |
102 | - echo "autopurge.purgeInteval=$ZK_PURGE_INTERVAL" >> $ZK_CONFIG_FILE | |
103 | - | |
104 | - if [ $ZK_REPLICAS -gt 1 ]; then | |
105 | - print_servers >> $ZK_CONFIG_FILE | |
106 | - fi | |
107 | - echo "Wrote ZooKeeper configuration file to $ZK_CONFIG_FILE" | |
108 | -} | |
109 | - | |
110 | -function create_data_dirs() { | |
111 | - echo "Creating ZooKeeper data directories and setting permissions" | |
112 | - if [ ! -d $ZK_DATA_DIR ]; then | |
113 | - mkdir -p $ZK_DATA_DIR | |
114 | - chown -R $ZK_USER:$ZK_USER $ZK_DATA_DIR | |
115 | - fi | |
116 | - | |
117 | - if [ ! -d $ZK_DATA_LOG_DIR ]; then | |
118 | - mkdir -p $ZK_DATA_LOG_DIR | |
119 | - chown -R $ZK_USER:$ZK_USER $ZK_DATA_LOG_DIR | |
120 | - fi | |
121 | - | |
122 | - if [ ! -d $ZK_LOG_DIR ]; then | |
123 | - mkdir -p $ZK_LOG_DIR | |
124 | - chown -R $ZK_USER:$ZK_USER $ZK_LOG_DIR | |
125 | - fi | |
126 | - if [ ! -f $ID_FILE ]; then | |
127 | - echo $MY_ID >> $ID_FILE | |
128 | - fi | |
129 | - echo "Created ZooKeeper data directories and set permissions in $ZK_DATA_DIR" | |
130 | -} | |
131 | - | |
132 | -function create_log_props () { | |
133 | - rm -f $LOGGER_PROPS_FILE | |
134 | - echo "Creating ZooKeeper log4j configuration" | |
135 | - echo "zookeeper.root.logger=CONSOLE" >> $LOGGER_PROPS_FILE | |
136 | - echo "zookeeper.console.threshold="$ZK_LOG_LEVEL >> $LOGGER_PROPS_FILE | |
137 | - echo "log4j.rootLogger=\${zookeeper.root.logger}" >> $LOGGER_PROPS_FILE | |
138 | - echo "log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender" >> $LOGGER_PROPS_FILE | |
139 | - echo "log4j.appender.CONSOLE.Threshold=\${zookeeper.console.threshold}" >> $LOGGER_PROPS_FILE | |
140 | - echo "log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout" >> $LOGGER_PROPS_FILE | |
141 | - echo "log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n" >> $LOGGER_PROPS_FILE | |
142 | - echo "Wrote log4j configuration to $LOGGER_PROPS_FILE" | |
143 | -} | |
144 | - | |
145 | -function create_java_env() { | |
146 | - rm -f $JAVA_ENV_FILE | |
147 | - echo "Creating JVM configuration file" | |
148 | - echo "ZOO_LOG_DIR=$ZK_LOG_DIR" >> $JAVA_ENV_FILE | |
149 | - echo "JVMFLAGS=\"-Xmx$ZK_HEAP_SIZE -Xms$ZK_HEAP_SIZE\"" >> $JAVA_ENV_FILE | |
150 | - echo "Wrote JVM configuration to $JAVA_ENV_FILE" | |
151 | -} | |
152 | - | |
153 | -validate_env && create_config && create_log_props && create_data_dirs && create_java_env |
msa/docker/.env
deleted
100644 → 0
1 | - | |
2 | -DOCKER_REPO=local-maven-build | |
3 | - | |
4 | -JS_EXECUTOR_DOCKER_NAME=tb-js-executor | |
5 | -TB_NODE_DOCKER_NAME=tb-node | |
6 | -WEB_UI_DOCKER_NAME=tb-web-ui | |
7 | -MQTT_TRANSPORT_DOCKER_NAME=tb-mqtt-transport | |
8 | -HTTP_TRANSPORT_DOCKER_NAME=tb-http-transport | |
9 | -COAP_TRANSPORT_DOCKER_NAME=tb-coap-transport | |
10 | - | |
11 | -TB_VERSION=2.2.0-SNAPSHOT | |
12 | - | |
13 | -KAFKA_TOPICS=js.eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.rule-engine:30:1 |
msa/docker/docker-compose.yml
deleted
100644 → 0
1 | -# | |
2 | -# Copyright © 2016-2018 The Thingsboard Authors | |
3 | -# | |
4 | -# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | -# you may not use this file except in compliance with the License. | |
6 | -# You may obtain a copy of the License at | |
7 | -# | |
8 | -# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | -# | |
10 | -# Unless required by applicable law or agreed to in writing, software | |
11 | -# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | -# See the License for the specific language governing permissions and | |
14 | -# limitations under the License. | |
15 | -# | |
16 | - | |
17 | - | |
18 | -version: '2.2' | |
19 | - | |
20 | -services: | |
21 | - zookeeper: | |
22 | - restart: always | |
23 | - image: "wurstmeister/zookeeper" | |
24 | - ports: | |
25 | - - "2181" | |
26 | - kafka: | |
27 | - restart: always | |
28 | - image: "wurstmeister/kafka" | |
29 | - ports: | |
30 | - - "9092:9092" | |
31 | - environment: | |
32 | - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 | |
33 | - KAFKA_LISTENERS: INSIDE://:9093,OUTSIDE://:9092 | |
34 | - KAFKA_ADVERTISED_LISTENERS: INSIDE://:9093,OUTSIDE://kafka:9092 | |
35 | - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT | |
36 | - KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE | |
37 | - KAFKA_CREATE_TOPICS: "${KAFKA_TOPICS}" | |
38 | - KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false' | |
39 | - KAFKA_LOG_RETENTION_BYTES: 1073741824 | |
40 | - KAFKA_LOG_SEGMENT_BYTES: 268435456 | |
41 | - KAFKA_LOG_RETENTION_MS: 300000 | |
42 | - KAFKA_LOG_CLEANUP_POLICY: delete | |
43 | - depends_on: | |
44 | - - zookeeper | |
45 | - tb-js-executor: | |
46 | - restart: always | |
47 | - image: "${DOCKER_REPO}/${JS_EXECUTOR_DOCKER_NAME}:${TB_VERSION}" | |
48 | - scale: 20 | |
49 | - environment: | |
50 | - TB_KAFKA_SERVERS: kafka:9092 | |
51 | - env_file: | |
52 | - - tb-js-executor.env | |
53 | - depends_on: | |
54 | - - kafka | |
55 | - tb: | |
56 | - restart: always | |
57 | - image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}" | |
58 | - ports: | |
59 | - - "8080" | |
60 | - logging: | |
61 | - driver: "json-file" | |
62 | - options: | |
63 | - max-size: "200m" | |
64 | - max-file: "30" | |
65 | - env_file: | |
66 | - - tb-node.env | |
67 | - environment: | |
68 | - ZOOKEEPER_URL: zk:2181 | |
69 | - TB_KAFKA_SERVERS: kafka:9092 | |
70 | - JS_EVALUATOR: remote | |
71 | - volumes: | |
72 | - - ./tb-node/db:/usr/share/thingsboard/data/db | |
73 | - - ./tb-node/conf:/config | |
74 | - - ./tb-node/log:/var/log/thingsboard | |
75 | - depends_on: | |
76 | - - kafka | |
77 | - tb-mqtt-transport1: | |
78 | - restart: always | |
79 | - image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
80 | - ports: | |
81 | - - "1883" | |
82 | - environment: | |
83 | - TB_KAFKA_SERVERS: kafka:9092 | |
84 | - env_file: | |
85 | - - tb-mqtt-transport.env | |
86 | - depends_on: | |
87 | - - kafka | |
88 | - tb-mqtt-transport2: | |
89 | - restart: always | |
90 | - image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
91 | - ports: | |
92 | - - "1883" | |
93 | - environment: | |
94 | - TB_KAFKA_SERVERS: kafka:9092 | |
95 | - env_file: | |
96 | - - tb-mqtt-transport.env | |
97 | - depends_on: | |
98 | - - kafka | |
99 | - tb-http-transport1: | |
100 | - restart: always | |
101 | - image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
102 | - ports: | |
103 | - - "8081" | |
104 | - environment: | |
105 | - TB_KAFKA_SERVERS: kafka:9092 | |
106 | - env_file: | |
107 | - - tb-http-transport.env | |
108 | - depends_on: | |
109 | - - kafka | |
110 | - tb-http-transport2: | |
111 | - restart: always | |
112 | - image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
113 | - ports: | |
114 | - - "8081" | |
115 | - environment: | |
116 | - TB_KAFKA_SERVERS: kafka:9092 | |
117 | - env_file: | |
118 | - - tb-http-transport.env | |
119 | - depends_on: | |
120 | - - kafka | |
121 | - tb-coap-transport: | |
122 | - restart: always | |
123 | - image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" | |
124 | - ports: | |
125 | - - "5683:5683/udp" | |
126 | - environment: | |
127 | - TB_KAFKA_SERVERS: kafka:9092 | |
128 | - env_file: | |
129 | - - tb-coap-transport.env | |
130 | - depends_on: | |
131 | - - kafka | |
132 | - tb-web-ui1: | |
133 | - restart: always | |
134 | - image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" | |
135 | - ports: | |
136 | - - "8080" | |
137 | - environment: | |
138 | - TB_HOST: tb | |
139 | - TB_PORT: 8080 | |
140 | - env_file: | |
141 | - - tb-web-ui.env | |
142 | - tb-web-ui2: | |
143 | - restart: always | |
144 | - image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" | |
145 | - ports: | |
146 | - - "8080" | |
147 | - environment: | |
148 | - TB_HOST: tb | |
149 | - TB_PORT: 8080 | |
150 | - env_file: | |
151 | - - tb-web-ui.env | |
152 | - web: | |
153 | - restart: always | |
154 | - container_name: haproxy-certbot | |
155 | - image: nmarus/haproxy-certbot | |
156 | - volumes: | |
157 | - - ./haproxy/config:/config | |
158 | - - ./haproxy/letsencrypt:/etc/letsencrypt | |
159 | - - ./haproxy/certs.d:/usr/local/etc/haproxy/certs.d | |
160 | - ports: | |
161 | - - "80:80" | |
162 | - - "443:443" | |
163 | - - "1883:1883" | |
164 | - - "9999:9999" | |
165 | - cap_add: | |
166 | - - NET_ADMIN | |
167 | - environment: | |
168 | - HTTP_PORT: 80 | |
169 | - HTTPS_PORT: 443 | |
170 | - MQTT_PORT: 1883 | |
171 | - links: | |
172 | - - tb-web-ui1 | |
173 | - - tb-web-ui2 | |
174 | - - tb-mqtt-transport1 | |
175 | - - tb-mqtt-transport2 | |
176 | - - tb-http-transport1 | |
177 | - - tb-http-transport2 |
msa/docker/tb-node.env
deleted
100644 → 0
1 | -# ThingsBoard server configuration | |
2 | - | |
3 | -TRANSPORT_TYPE=remote | |
4 | - | |
5 | -# type of database to use: sql[DEFAULT] or cassandra | |
6 | -DATABASE_TS_TYPE=sql | |
7 | -DATABASE_ENTITIES_TYPE=sql | |
8 | -SQL_DATA_FOLDER=/usr/share/thingsboard/data/db | |
9 | - | |
10 | -# cassandra db config | |
11 | -CASSANDRA_URL=cassandra:9042 | |
12 | -CASSANDRA_HOST=cassandra | |
13 | -CASSANDRA_PORT=9042 | |
14 | - | |
15 | -# postgres db config | |
16 | -POSTGRES_HOST=postgres | |
17 | -POSTGRES_PORT=5432 | |
18 | -# SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect | |
19 | -# SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver | |
20 | -# SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard | |
21 | -# SPRING_DATASOURCE_USERNAME=postgres | |
22 | -# SPRING_DATASOURCE_PASSWORD=postgres |
... | ... | @@ -287,16 +287,27 @@ |
287 | 287 | <goals> |
288 | 288 | <goal>build</goal> |
289 | 289 | </goals> |
290 | + <configuration> | |
291 | + <skip>${dockerfile.skip}</skip> | |
292 | + <repository>${docker.repo}/${docker.name}</repository> | |
293 | + <verbose>true</verbose> | |
294 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
295 | + <contextDirectory>${project.build.directory}</contextDirectory> | |
296 | + </configuration> | |
297 | + </execution> | |
298 | + <execution> | |
299 | + <id>tag-docker-image</id> | |
300 | + <phase>pre-integration-test</phase> | |
301 | + <goals> | |
302 | + <goal>tag</goal> | |
303 | + </goals> | |
304 | + <configuration> | |
305 | + <skip>${dockerfile.skip}</skip> | |
306 | + <repository>${docker.repo}/${docker.name}</repository> | |
307 | + <tag>${project.version}</tag> | |
308 | + </configuration> | |
290 | 309 | </execution> |
291 | 310 | </executions> |
292 | - <configuration> | |
293 | - <skip>${dockerfile.skip}</skip> | |
294 | - <repository>${docker.repo}/${docker.name}</repository> | |
295 | - <tag>${project.version}</tag> | |
296 | - <verbose>true</verbose> | |
297 | - <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
298 | - <contextDirectory>${project.build.directory}</contextDirectory> | |
299 | - </configuration> | |
300 | 311 | </plugin> |
301 | 312 | </plugins> |
302 | 313 | </build> |
... | ... | @@ -334,6 +345,46 @@ |
334 | 345 | </plugins> |
335 | 346 | </build> |
336 | 347 | </profile> |
348 | + <profile> | |
349 | + <id>push-docker-image</id> | |
350 | + <activation> | |
351 | + <property> | |
352 | + <name>push-docker-image</name> | |
353 | + </property> | |
354 | + </activation> | |
355 | + <build> | |
356 | + <plugins> | |
357 | + <plugin> | |
358 | + <groupId>com.spotify</groupId> | |
359 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
360 | + <executions> | |
361 | + <execution> | |
362 | + <id>push-latest-docker-image</id> | |
363 | + <phase>pre-integration-test</phase> | |
364 | + <goals> | |
365 | + <goal>push</goal> | |
366 | + </goals> | |
367 | + <configuration> | |
368 | + <tag>latest</tag> | |
369 | + <repository>${docker.repo}/${docker.name}</repository> | |
370 | + </configuration> | |
371 | + </execution> | |
372 | + <execution> | |
373 | + <id>push-version-docker-image</id> | |
374 | + <phase>pre-integration-test</phase> | |
375 | + <goals> | |
376 | + <goal>push</goal> | |
377 | + </goals> | |
378 | + <configuration> | |
379 | + <tag>${project.version}</tag> | |
380 | + <repository>${docker.repo}/${docker.name}</repository> | |
381 | + </configuration> | |
382 | + </execution> | |
383 | + </executions> | |
384 | + </plugin> | |
385 | + </plugins> | |
386 | + </build> | |
387 | + </profile> | |
337 | 388 | </profiles> |
338 | 389 | <repositories> |
339 | 390 | <repository> | ... | ... |
... | ... | @@ -32,11 +32,12 @@ |
32 | 32 | |
33 | 33 | <properties> |
34 | 34 | <main.dir>${basedir}/..</main.dir> |
35 | - <docker.repo>local-maven-build</docker.repo> | |
35 | + <docker.repo>thingsboard</docker.repo> | |
36 | 36 | <dockerfile.skip>true</dockerfile.skip> |
37 | 37 | </properties> |
38 | 38 | |
39 | 39 | <modules> |
40 | + <module>tb</module> | |
40 | 41 | <module>js-executor</module> |
41 | 42 | <module>web-ui</module> |
42 | 43 | <module>tb-node</module> | ... | ... |
... | ... | @@ -111,19 +111,72 @@ |
111 | 111 | <goals> |
112 | 112 | <goal>build</goal> |
113 | 113 | </goals> |
114 | + <configuration> | |
115 | + <skip>${dockerfile.skip}</skip> | |
116 | + <repository>${docker.repo}/${docker.name}</repository> | |
117 | + <verbose>true</verbose> | |
118 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
119 | + <contextDirectory>${project.build.directory}</contextDirectory> | |
120 | + </configuration> | |
121 | + </execution> | |
122 | + <execution> | |
123 | + <id>tag-docker-image</id> | |
124 | + <phase>pre-integration-test</phase> | |
125 | + <goals> | |
126 | + <goal>tag</goal> | |
127 | + </goals> | |
128 | + <configuration> | |
129 | + <skip>${dockerfile.skip}</skip> | |
130 | + <repository>${docker.repo}/${docker.name}</repository> | |
131 | + <tag>${project.version}</tag> | |
132 | + </configuration> | |
114 | 133 | </execution> |
115 | 134 | </executions> |
116 | - <configuration> | |
117 | - <skip>${dockerfile.skip}</skip> | |
118 | - <repository>${docker.repo}/${docker.name}</repository> | |
119 | - <tag>${project.version}</tag> | |
120 | - <verbose>true</verbose> | |
121 | - <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
122 | - <contextDirectory>${project.build.directory}</contextDirectory> | |
123 | - </configuration> | |
124 | 135 | </plugin> |
125 | 136 | </plugins> |
126 | 137 | </build> |
138 | + <profiles> | |
139 | + <profile> | |
140 | + <id>push-docker-image</id> | |
141 | + <activation> | |
142 | + <property> | |
143 | + <name>push-docker-image</name> | |
144 | + </property> | |
145 | + </activation> | |
146 | + <build> | |
147 | + <plugins> | |
148 | + <plugin> | |
149 | + <groupId>com.spotify</groupId> | |
150 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
151 | + <executions> | |
152 | + <execution> | |
153 | + <id>push-latest-docker-image</id> | |
154 | + <phase>pre-integration-test</phase> | |
155 | + <goals> | |
156 | + <goal>push</goal> | |
157 | + </goals> | |
158 | + <configuration> | |
159 | + <tag>latest</tag> | |
160 | + <repository>${docker.repo}/${docker.name}</repository> | |
161 | + </configuration> | |
162 | + </execution> | |
163 | + <execution> | |
164 | + <id>push-version-docker-image</id> | |
165 | + <phase>pre-integration-test</phase> | |
166 | + <goals> | |
167 | + <goal>push</goal> | |
168 | + </goals> | |
169 | + <configuration> | |
170 | + <tag>${project.version}</tag> | |
171 | + <repository>${docker.repo}/${docker.name}</repository> | |
172 | + </configuration> | |
173 | + </execution> | |
174 | + </executions> | |
175 | + </plugin> | |
176 | + </plugins> | |
177 | + </build> | |
178 | + </profile> | |
179 | + </profiles> | |
127 | 180 | <repositories> |
128 | 181 | <repository> |
129 | 182 | <id>jenkins</id> | ... | ... |
msa/tb/README.md
0 → 100644
1 | +# ThingsBoard single docker images | |
2 | + | |
3 | +This project provides the build for the ThingsBoard single docker images. | |
4 | + | |
5 | +* `thingsboard/tb` - single instance of ThingsBoard with embedded HSQLDB database. | |
6 | +* `thingsboard/tb-postgres` - single instance of ThingsBoard with PostgreSQL database. | |
7 | +* `thingsboard/tb-cassandra` - single instance of ThingsBoard with Cassandra database. | |
8 | + | |
9 | +## Running | |
10 | + | |
11 | +Execute the following command to run this docker directly: | |
12 | + | |
13 | +` | |
14 | +$ docker run -it -p 9090:9090 -p 1883:1883 -p 5683:5683/udp -v ~/.mytb-data:/data --name mytb thingsboard/tb | |
15 | +` | |
16 | + | |
17 | +Where: | |
18 | + | |
19 | +- `docker run` - run this container | |
20 | +- `-it` - attach a terminal session with current ThingsBoard process output | |
21 | +- `-p 9090:9090` - connect local port 9090 to exposed internal HTTP port 9090 | |
22 | +- `-p 1883:1883` - connect local port 1883 to exposed internal MQTT port 1883 | |
23 | +- `-p 5683:5683` - connect local port 5683 to exposed internal COAP port 5683 | |
24 | +- `-v ~/.mytb-data:/data` - mounts the host's dir `~/.mytb-data` to ThingsBoard DataBase data directory | |
25 | +- `--name mytb` - friendly local name of this machine | |
26 | +- `thingsboard/tb` - docker image | |
27 | + | |
28 | +After executing this command you can open `http://{yor-host-ip}:9090` in you browser. You should see ThingsBoard login page. | |
29 | +Use the following default credentials: | |
30 | + | |
31 | +- **Systen Administrator**: sysadmin@thingsboard.org / sysadmin | |
32 | +- **Tenant Administrator**: tenant@thingsboard.org / tenant | |
33 | +- **Customer User**: customer@thingsboard.org / customer | |
34 | + | |
35 | +You can always change passwords for each account in account profile page. | |
36 | + | |
37 | +You can detach from session terminal with `Ctrl-p` `Ctrl-q` - the container will keep running in the background. | |
38 | + | |
39 | +To reattach to the terminal (to see ThingsBoard logs) run: | |
40 | + | |
41 | +` | |
42 | +$ docker attach mytb | |
43 | +` | |
44 | + | |
45 | +To stop the container: | |
46 | + | |
47 | +` | |
48 | +$ docker stop mytb | |
49 | +` | |
50 | + | |
51 | +To start the container: | |
52 | + | |
53 | +` | |
54 | +$ docker start mytb | |
55 | +` | |
56 | + | |
57 | +## Upgrading | |
58 | + | |
59 | +In order to update to the latest image, execute the following commands: | |
60 | + | |
61 | +` | |
62 | +$ docker pull thingsboard/tb | |
63 | +$ docker stop mytb | |
64 | +$ docker run -it -v ~/.mytb-data:/data --rm thingsboard/tb upgrade-tb.sh | |
65 | +$ docker start mytb | |
66 | +` | |
67 | + | |
68 | +**NOTE**: replace host's directory `~/.mytb-data` with directory used during container creation. | ... | ... |
msa/tb/docker-cassandra/Dockerfile
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2018 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +FROM openjdk:8-jre | |
18 | + | |
19 | +RUN apt-get update | |
20 | +RUN apt-get install -y curl nmap procps | |
21 | +RUN echo 'deb http://www.apache.org/dist/cassandra/debian 311x main' | tee --append /etc/apt/sources.list.d/cassandra.list > /dev/null | |
22 | +RUN curl https://www.apache.org/dist/cassandra/KEYS | apt-key add - | |
23 | +RUN apt-get update | |
24 | +RUN apt-get install -y cassandra cassandra-tools | |
25 | +RUN update-rc.d cassandra disable | |
26 | +RUN sed -i.old '/ulimit/d' /etc/init.d/cassandra | |
27 | + | |
28 | +COPY logback.xml ${pkg.name}.conf start-db.sh stop-db.sh start-tb.sh upgrade-tb.sh install-tb.sh ${pkg.name}.deb /tmp/ | |
29 | + | |
30 | +RUN chmod a+x /tmp/*.sh \ | |
31 | + && mv /tmp/start-tb.sh /usr/bin \ | |
32 | + && mv /tmp/upgrade-tb.sh /usr/bin \ | |
33 | + && mv /tmp/install-tb.sh /usr/bin \ | |
34 | + && mv /tmp/start-db.sh /usr/bin \ | |
35 | + && mv /tmp/stop-db.sh /usr/bin | |
36 | + | |
37 | +RUN dpkg -i /tmp/${pkg.name}.deb | |
38 | + | |
39 | +RUN update-rc.d ${pkg.name} disable | |
40 | + | |
41 | +RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \ | |
42 | + && mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf | |
43 | + | |
44 | +ENV DATA_FOLDER=/data | |
45 | + | |
46 | +ENV HTTP_BIND_PORT=9090 | |
47 | +ENV DATABASE_TS_TYPE=cassandra | |
48 | +ENV DATABASE_ENTITIES_TYPE=cassandra | |
49 | + | |
50 | +ENV CASSANDRA_HOST=localhost | |
51 | +ENV CASSANDRA_PORT=9042 | |
52 | + | |
53 | +EXPOSE 9090 | |
54 | +EXPOSE 1883 | |
55 | +EXPOSE 5683/udp | |
56 | + | |
57 | +VOLUME ["/data"] | |
58 | + | |
59 | +CMD ["start-tb.sh"] | ... | ... |
msa/tb/docker-cassandra/start-db.sh
renamed from
docker/cassandra-setup/install.sh
100755 → 100644
... | ... | @@ -15,19 +15,24 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | +cassandra_data_dir=${DATA_FOLDER}/db | |
19 | +cassandra_data_link=/var/lib/cassandra | |
18 | 20 | |
19 | -dpkg -i /thingsboard.deb | |
21 | +if [ ! -L ${cassandra_data_link} ]; then | |
22 | + if [ -d ${cassandra_data_link} ]; then | |
23 | + rm -rf ${cassandra_data_link} | |
24 | + fi | |
25 | + if [ ! -d ${cassandra_data_dir} ]; then | |
26 | + mkdir -p ${cassandra_data_dir} | |
27 | + chown -R cassandra:cassandra ${cassandra_data_dir} | |
28 | + fi | |
29 | + ln -s ${cassandra_data_dir} ${cassandra_data_link} | |
30 | +fi | |
31 | + | |
32 | +service cassandra start | |
20 | 33 | |
21 | 34 | until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open" |
22 | 35 | do |
23 | 36 | echo "Wait for cassandra db to start..." |
24 | - sleep 10 | |
37 | + sleep 5 | |
25 | 38 | done |
26 | - | |
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 | ... | ... |
msa/tb/docker-cassandra/stop-db.sh
renamed from
msa/docker/docker-stop-services.sh
100755 → 100644
msa/tb/docker-postgres/Dockerfile
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2018 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +FROM openjdk:8-jre | |
18 | + | |
19 | +RUN apt-get update | |
20 | +RUN apt-get install -y postgresql postgresql-contrib | |
21 | +RUN update-rc.d postgresql disable | |
22 | + | |
23 | +RUN mkdir -p /var/log/postgres | |
24 | +RUN chown -R postgres:postgres /var/log/postgres | |
25 | + | |
26 | +COPY logback.xml ${pkg.name}.conf start-db.sh stop-db.sh start-tb.sh upgrade-tb.sh install-tb.sh ${pkg.name}.deb /tmp/ | |
27 | + | |
28 | +RUN chmod a+x /tmp/*.sh \ | |
29 | + && mv /tmp/start-tb.sh /usr/bin \ | |
30 | + && mv /tmp/upgrade-tb.sh /usr/bin \ | |
31 | + && mv /tmp/install-tb.sh /usr/bin \ | |
32 | + && mv /tmp/start-db.sh /usr/bin \ | |
33 | + && mv /tmp/stop-db.sh /usr/bin | |
34 | + | |
35 | +RUN dpkg -i /tmp/${pkg.name}.deb | |
36 | + | |
37 | +RUN update-rc.d ${pkg.name} disable | |
38 | + | |
39 | +RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \ | |
40 | + && mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf | |
41 | + | |
42 | +ENV DATA_FOLDER=/data | |
43 | + | |
44 | +ENV HTTP_BIND_PORT=9090 | |
45 | +ENV DATABASE_TS_TYPE=sql | |
46 | +ENV DATABASE_ENTITIES_TYPE=sql | |
47 | + | |
48 | +ENV PGDATA=/data/db | |
49 | + | |
50 | +ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect | |
51 | +ENV SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver | |
52 | +ENV SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard | |
53 | +ENV SPRING_DATASOURCE_USERNAME=postgres | |
54 | +ENV SPRING_DATASOURCE_PASSWORD=postgres | |
55 | + | |
56 | +EXPOSE 9090 | |
57 | +EXPOSE 1883 | |
58 | +EXPOSE 5683/udp | |
59 | + | |
60 | +VOLUME ["/data"] | |
61 | + | |
62 | +CMD ["start-tb.sh"] | ... | ... |
msa/tb/docker-postgres/start-db.sh
renamed from
docker/cassandra/ready-probe.sh
1 | -#!/usr/bin/env bash | |
1 | +#!/bin/bash | |
2 | 2 | # |
3 | 3 | # Copyright © 2016-2018 The Thingsboard Authors |
4 | 4 | # |
... | ... | @@ -15,14 +15,16 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | -if [[ $(nodetool status | grep $POD_IP) == *"UN"* ]]; then | |
19 | - if [[ $DEBUG ]]; then | |
20 | - echo "UN"; | |
21 | - fi | |
22 | - exit 0; | |
23 | -else | |
24 | - if [[ $DEBUG ]]; then | |
25 | - echo "Not Up"; | |
26 | - fi | |
27 | - exit 1; | |
28 | -fi | |
\ No newline at end of file | ||
18 | +firstlaunch=${DATA_FOLDER}/.firstlaunch | |
19 | + | |
20 | +if [ ! -d ${PGDATA} ]; then | |
21 | + mkdir -p ${PGDATA} | |
22 | + chown -R postgres:postgres ${PGDATA} | |
23 | + su postgres -c '/usr/lib/postgresql/9.6/bin/pg_ctl initdb -U postgres' | |
24 | +fi | |
25 | + | |
26 | +su postgres -c '/usr/lib/postgresql/9.6/bin/pg_ctl -l /var/log/postgres/postgres.log -w start' | |
27 | + | |
28 | +if [ ! -f ${firstlaunch} ]; then | |
29 | + su postgres -c 'psql -U postgres -d postgres -c "CREATE DATABASE thingsboard"' | |
30 | +fi | ... | ... |
msa/tb/docker-postgres/stop-db.sh
renamed from
msa/docker/docker-start-services.sh
100755 → 100644
msa/tb/docker-tb/Dockerfile
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2018 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +FROM openjdk:8-jre | |
18 | + | |
19 | +COPY logback.xml ${pkg.name}.conf start-db.sh stop-db.sh start-tb.sh upgrade-tb.sh install-tb.sh ${pkg.name}.deb /tmp/ | |
20 | + | |
21 | +RUN chmod a+x /tmp/*.sh \ | |
22 | + && mv /tmp/start-tb.sh /usr/bin \ | |
23 | + && mv /tmp/upgrade-tb.sh /usr/bin \ | |
24 | + && mv /tmp/install-tb.sh /usr/bin \ | |
25 | + && mv /tmp/start-db.sh /usr/bin \ | |
26 | + && mv /tmp/stop-db.sh /usr/bin | |
27 | + | |
28 | +RUN dpkg -i /tmp/${pkg.name}.deb | |
29 | + | |
30 | +RUN update-rc.d ${pkg.name} disable | |
31 | + | |
32 | +RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \ | |
33 | + && mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf | |
34 | + | |
35 | +ENV DATA_FOLDER=/data | |
36 | + | |
37 | +ENV HTTP_BIND_PORT=9090 | |
38 | +ENV DATABASE_TS_TYPE=sql | |
39 | +ENV DATABASE_ENTITIES_TYPE=sql | |
40 | +ENV SQL_DATA_FOLDER=/data/db | |
41 | + | |
42 | +EXPOSE 9090 | |
43 | +EXPOSE 1883 | |
44 | +EXPOSE 5683/udp | |
45 | + | |
46 | +VOLUME ["/data"] | |
47 | + | |
48 | +CMD ["start-tb.sh"] | ... | ... |
msa/tb/docker-tb/start-db.sh
renamed from
msa/docker/docker-update-service.sh
100755 → 100644
msa/tb/docker-tb/stop-db.sh
renamed from
docker/cassandra/Dockerfile
1 | +#!/bin/bash | |
1 | 2 | # |
2 | 3 | # Copyright © 2016-2018 The Thingsboard Authors |
3 | 4 | # |
... | ... | @@ -14,10 +15,4 @@ |
14 | 15 | # limitations under the License. |
15 | 16 | # |
16 | 17 | |
17 | -FROM cassandra:3.11.2 | |
18 | - | |
19 | -ADD ready-probe.sh /ready-probe.sh | |
20 | - | |
21 | -RUN chmod +x /ready-probe.sh | |
22 | - | |
23 | -CMD ["cassandra", "-f"] | |
\ No newline at end of file | ||
18 | +# Do nothing | |
\ No newline at end of file | ... | ... |
msa/tb/docker/install-tb.sh
0 → 100644
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2018 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 | +while [[ $# -gt 0 ]] | |
19 | +do | |
20 | +key="$1" | |
21 | + | |
22 | +case $key in | |
23 | + --loadDemo) | |
24 | + LOAD_DEMO=true | |
25 | + shift # past argument | |
26 | + ;; | |
27 | + *) | |
28 | + # unknown option | |
29 | + ;; | |
30 | +esac | |
31 | +shift # past argument or value | |
32 | +done | |
33 | + | |
34 | +if [ "$LOAD_DEMO" == "true" ]; then | |
35 | + loadDemo=true | |
36 | +else | |
37 | + loadDemo=false | |
38 | +fi | |
39 | + | |
40 | +CONF_FOLDER="${pkg.installFolder}/conf" | |
41 | +jarfile=${pkg.installFolder}/bin/${pkg.name}.jar | |
42 | +configfile=${pkg.name}.conf | |
43 | +upgradeversion=${DATA_FOLDER}/.upgradeversion | |
44 | + | |
45 | +source "${CONF_FOLDER}/${configfile}" | |
46 | + | |
47 | +echo "Starting ThingsBoard installation ..." | |
48 | + | |
49 | +java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \ | |
50 | + -Dinstall.load_demo=${loadDemo} \ | |
51 | + -Dspring.jpa.hibernate.ddl-auto=none \ | |
52 | + -Dinstall.upgrade=false \ | |
53 | + -Dlogging.config=/usr/share/thingsboard/bin/install/logback.xml \ | |
54 | + org.springframework.boot.loader.PropertiesLauncher | |
55 | + | |
56 | +echo "${pkg.upgradeVersion}" > ${upgradeversion} | ... | ... |
msa/tb/docker/logback.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8" ?> | |
2 | +<!-- | |
3 | + | |
4 | + Copyright © 2016-2018 The Thingsboard Authors | |
5 | + | |
6 | + Licensed under the Apache License, Version 2.0 (the "License"); | |
7 | + you may not use this file except in compliance with the License. | |
8 | + You may obtain a copy of the License at | |
9 | + | |
10 | + http://www.apache.org/licenses/LICENSE-2.0 | |
11 | + | |
12 | + Unless required by applicable law or agreed to in writing, software | |
13 | + distributed under the License is distributed on an "AS IS" BASIS, | |
14 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 | + See the License for the specific language governing permissions and | |
16 | + limitations under the License. | |
17 | + | |
18 | +--> | |
19 | +<!DOCTYPE configuration> | |
20 | +<configuration scan="true" scanPeriod="10 seconds"> | |
21 | + | |
22 | + <appender name="fileLogAppender" | |
23 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
24 | + <file>/var/log/thingsboard/thingsboard.log</file> | |
25 | + <rollingPolicy | |
26 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |
27 | + <fileNamePattern>/var/log/thingsboard/thingsboard.%d{yyyy-MM-dd}.%i.log</fileNamePattern> | |
28 | + <maxFileSize>100MB</maxFileSize> | |
29 | + <maxHistory>30</maxHistory> | |
30 | + <totalSizeCap>3GB</totalSizeCap> | |
31 | + </rollingPolicy> | |
32 | + <encoder> | |
33 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
34 | + </encoder> | |
35 | + </appender> | |
36 | + | |
37 | + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |
38 | + <encoder> | |
39 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
40 | + </encoder> | |
41 | + </appender> | |
42 | + | |
43 | + <logger name="org.thingsboard.server" level="INFO" /> | |
44 | + <logger name="akka" level="INFO" /> | |
45 | + | |
46 | + <root level="INFO"> | |
47 | + <appender-ref ref="fileLogAppender"/> | |
48 | + <appender-ref ref="STDOUT"/> | |
49 | + </root> | |
50 | + | |
51 | +</configuration> | |
\ No newline at end of file | ... | ... |
msa/tb/docker/start-tb.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2018 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 | +start-db.sh | |
19 | + | |
20 | +CONF_FOLDER="${pkg.installFolder}/conf" | |
21 | +jarfile=${pkg.installFolder}/bin/${pkg.name}.jar | |
22 | +configfile=${pkg.name}.conf | |
23 | +firstlaunch=${DATA_FOLDER}/.firstlaunch | |
24 | + | |
25 | +source "${CONF_FOLDER}/${configfile}" | |
26 | + | |
27 | +if [ ! -f ${firstlaunch} ]; then | |
28 | + install-tb.sh --loadDemo | |
29 | + touch ${firstlaunch} | |
30 | +fi | |
31 | + | |
32 | +echo "Starting ThingsBoard ..." | |
33 | + | |
34 | +java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardServerApplication \ | |
35 | + -Dspring.jpa.hibernate.ddl-auto=none \ | |
36 | + -Dlogging.config=${CONF_FOLDER}/logback.xml \ | |
37 | + org.springframework.boot.loader.PropertiesLauncher | |
38 | + | |
39 | +stop-db.sh | |
\ No newline at end of file | ... | ... |
msa/tb/docker/thingsboard.conf
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2018 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +export JAVA_OPTS="$JAVA_OPTS -Dplatform=deb -Dinstall.data_dir=/usr/share/thingsboard/data" | |
18 | +export JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/thingsboard/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps" | |
19 | +export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10" | |
20 | +export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" | |
21 | +export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled" | |
22 | +export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError" | |
23 | +export LOG_FILENAME=thingsboard.out | |
24 | +export LOADER_PATH=/usr/share/thingsboard/conf,/usr/share/thingsboard/extensions | ... | ... |
msa/tb/docker/upgrade-tb.sh
renamed from
docker/zookeeper/zk-ok.sh
100755 → 100644
1 | -#!/usr/bin/env bash | |
1 | +#!/bin/bash | |
2 | 2 | # |
3 | 3 | # Copyright © 2016-2018 The Thingsboard Authors |
4 | 4 | # |
... | ... | @@ -15,14 +15,33 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | -# zk-ok.sh uses the ruok ZooKeeper four letter work to determine if the instance | |
19 | -# is health. The $? variable will be set to 0 if server responds that it is | |
20 | -# healthy, or 1 if the server fails to respond. | |
18 | +start-db.sh | |
21 | 19 | |
22 | -ZK_CLIENT_PORT=${ZK_CLIENT_PORT:-2181} | |
23 | -OK=$(echo ruok | nc 127.0.0.1 $ZK_CLIENT_PORT) | |
24 | -if [ "$OK" == "imok" ]; then | |
25 | - exit 0 | |
20 | +CONF_FOLDER="${pkg.installFolder}/conf" | |
21 | +jarfile=${pkg.installFolder}/bin/${pkg.name}.jar | |
22 | +configfile=${pkg.name}.conf | |
23 | +upgradeversion=${DATA_FOLDER}/.upgradeversion | |
24 | + | |
25 | +source "${CONF_FOLDER}/${configfile}" | |
26 | + | |
27 | +FROM_VERSION=`cat ${upgradeversion}` | |
28 | + | |
29 | +echo "Starting ThingsBoard upgrade ..." | |
30 | + | |
31 | +if [[ -z "${FROM_VERSION// }" ]]; then | |
32 | + echo "FROM_VERSION variable is invalid or unspecified!" | |
33 | + exit 1 | |
26 | 34 | else |
27 | - exit 1 | |
35 | + fromVersion="${FROM_VERSION// }" | |
28 | 36 | fi |
37 | + | |
38 | +java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardInstallApplication \ | |
39 | + -Dspring.jpa.hibernate.ddl-auto=none \ | |
40 | + -Dinstall.upgrade=true \ | |
41 | + -Dinstall.upgrade.from_version=${fromVersion} \ | |
42 | + -Dlogging.config=/usr/share/thingsboard/bin/install/logback.xml \ | |
43 | + org.springframework.boot.loader.PropertiesLauncher | |
44 | + | |
45 | +echo "${pkg.upgradeVersion}" > ${upgradeversion} | |
46 | + | |
47 | +stop-db.sh | |
\ No newline at end of file | ... | ... |
msa/tb/pom.xml
0 → 100644
1 | +<!-- | |
2 | + | |
3 | + Copyright © 2016-2018 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 | +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
19 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
20 | + <modelVersion>4.0.0</modelVersion> | |
21 | + <parent> | |
22 | + <groupId>org.thingsboard</groupId> | |
23 | + <version>2.2.0-SNAPSHOT</version> | |
24 | + <artifactId>msa</artifactId> | |
25 | + </parent> | |
26 | + <groupId>org.thingsboard.msa</groupId> | |
27 | + <artifactId>tb</artifactId> | |
28 | + <packaging>pom</packaging> | |
29 | + | |
30 | + <name>ThingsBoard Docker Images</name> | |
31 | + <url>https://thingsboard.io</url> | |
32 | + <description>ThingsBoard Docker Images</description> | |
33 | + | |
34 | + <properties> | |
35 | + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
36 | + <main.dir>${basedir}/../..</main.dir> | |
37 | + <pkg.name>thingsboard</pkg.name> | |
38 | + <tb.docker.name>tb</tb.docker.name> | |
39 | + <tb-postgres.docker.name>tb-postgres</tb-postgres.docker.name> | |
40 | + <tb-cassandra.docker.name>tb-cassandra</tb-cassandra.docker.name> | |
41 | + <pkg.user>thingsboard</pkg.user> | |
42 | + <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> | |
43 | + <pkg.upgradeVersion>2.1.1</pkg.upgradeVersion> | |
44 | + </properties> | |
45 | + | |
46 | + <dependencies> | |
47 | + <dependency> | |
48 | + <groupId>org.thingsboard</groupId> | |
49 | + <artifactId>application</artifactId> | |
50 | + <version>${project.version}</version> | |
51 | + <classifier>deb</classifier> | |
52 | + <type>deb</type> | |
53 | + <scope>provided</scope> | |
54 | + </dependency> | |
55 | + </dependencies> | |
56 | + | |
57 | + <build> | |
58 | + <plugins> | |
59 | + <plugin> | |
60 | + <groupId>org.apache.maven.plugins</groupId> | |
61 | + <artifactId>maven-dependency-plugin</artifactId> | |
62 | + <executions> | |
63 | + <execution> | |
64 | + <id>copy-tb-deb</id> | |
65 | + <phase>package</phase> | |
66 | + <goals> | |
67 | + <goal>copy</goal> | |
68 | + </goals> | |
69 | + <configuration> | |
70 | + <artifactItems> | |
71 | + <artifactItem> | |
72 | + <groupId>org.thingsboard</groupId> | |
73 | + <artifactId>application</artifactId> | |
74 | + <classifier>deb</classifier> | |
75 | + <type>deb</type> | |
76 | + <destFileName>${pkg.name}.deb</destFileName> | |
77 | + <outputDirectory>${project.build.directory}/docker-tb</outputDirectory> | |
78 | + </artifactItem> | |
79 | + </artifactItems> | |
80 | + </configuration> | |
81 | + </execution> | |
82 | + <execution> | |
83 | + <id>copy-tb-postgres-deb</id> | |
84 | + <phase>package</phase> | |
85 | + <goals> | |
86 | + <goal>copy</goal> | |
87 | + </goals> | |
88 | + <configuration> | |
89 | + <artifactItems> | |
90 | + <artifactItem> | |
91 | + <groupId>org.thingsboard</groupId> | |
92 | + <artifactId>application</artifactId> | |
93 | + <classifier>deb</classifier> | |
94 | + <type>deb</type> | |
95 | + <destFileName>${pkg.name}.deb</destFileName> | |
96 | + <outputDirectory>${project.build.directory}/docker-postgres</outputDirectory> | |
97 | + </artifactItem> | |
98 | + </artifactItems> | |
99 | + </configuration> | |
100 | + </execution> | |
101 | + <execution> | |
102 | + <id>copy-tb-cassandra-deb</id> | |
103 | + <phase>package</phase> | |
104 | + <goals> | |
105 | + <goal>copy</goal> | |
106 | + </goals> | |
107 | + <configuration> | |
108 | + <artifactItems> | |
109 | + <artifactItem> | |
110 | + <groupId>org.thingsboard</groupId> | |
111 | + <artifactId>application</artifactId> | |
112 | + <classifier>deb</classifier> | |
113 | + <type>deb</type> | |
114 | + <destFileName>${pkg.name}.deb</destFileName> | |
115 | + <outputDirectory>${project.build.directory}/docker-cassandra</outputDirectory> | |
116 | + </artifactItem> | |
117 | + </artifactItems> | |
118 | + </configuration> | |
119 | + </execution> | |
120 | + </executions> | |
121 | + </plugin> | |
122 | + <plugin> | |
123 | + <groupId>org.apache.maven.plugins</groupId> | |
124 | + <artifactId>maven-resources-plugin</artifactId> | |
125 | + <executions> | |
126 | + <execution> | |
127 | + <id>copy-docker-tb-config</id> | |
128 | + <phase>process-resources</phase> | |
129 | + <goals> | |
130 | + <goal>copy-resources</goal> | |
131 | + </goals> | |
132 | + <configuration> | |
133 | + <outputDirectory>${project.build.directory}/docker-tb</outputDirectory> | |
134 | + <resources> | |
135 | + <resource> | |
136 | + <directory>docker</directory> | |
137 | + <filtering>true</filtering> | |
138 | + </resource> | |
139 | + <resource> | |
140 | + <directory>docker-tb</directory> | |
141 | + <filtering>true</filtering> | |
142 | + </resource> | |
143 | + </resources> | |
144 | + </configuration> | |
145 | + </execution> | |
146 | + <execution> | |
147 | + <id>copy-docker-tb-postgres-config</id> | |
148 | + <phase>process-resources</phase> | |
149 | + <goals> | |
150 | + <goal>copy-resources</goal> | |
151 | + </goals> | |
152 | + <configuration> | |
153 | + <outputDirectory>${project.build.directory}/docker-postgres</outputDirectory> | |
154 | + <resources> | |
155 | + <resource> | |
156 | + <directory>docker</directory> | |
157 | + <filtering>true</filtering> | |
158 | + </resource> | |
159 | + <resource> | |
160 | + <directory>docker-postgres</directory> | |
161 | + <filtering>true</filtering> | |
162 | + </resource> | |
163 | + </resources> | |
164 | + </configuration> | |
165 | + </execution> | |
166 | + <execution> | |
167 | + <id>copy-docker-tb-cassandra-config</id> | |
168 | + <phase>process-resources</phase> | |
169 | + <goals> | |
170 | + <goal>copy-resources</goal> | |
171 | + </goals> | |
172 | + <configuration> | |
173 | + <outputDirectory>${project.build.directory}/docker-cassandra</outputDirectory> | |
174 | + <resources> | |
175 | + <resource> | |
176 | + <directory>docker</directory> | |
177 | + <filtering>true</filtering> | |
178 | + </resource> | |
179 | + <resource> | |
180 | + <directory>docker-cassandra</directory> | |
181 | + <filtering>true</filtering> | |
182 | + </resource> | |
183 | + </resources> | |
184 | + </configuration> | |
185 | + </execution> | |
186 | + </executions> | |
187 | + </plugin> | |
188 | + <plugin> | |
189 | + <groupId>com.spotify</groupId> | |
190 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
191 | + <executions> | |
192 | + <execution> | |
193 | + <id>build-docker-tb-image</id> | |
194 | + <phase>pre-integration-test</phase> | |
195 | + <goals> | |
196 | + <goal>build</goal> | |
197 | + </goals> | |
198 | + <configuration> | |
199 | + <skip>${dockerfile.skip}</skip> | |
200 | + <repository>${docker.repo}/${tb.docker.name}</repository> | |
201 | + <verbose>true</verbose> | |
202 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
203 | + <contextDirectory>${project.build.directory}/docker-tb</contextDirectory> | |
204 | + </configuration> | |
205 | + </execution> | |
206 | + <execution> | |
207 | + <id>tag-docker-tb-image</id> | |
208 | + <phase>pre-integration-test</phase> | |
209 | + <goals> | |
210 | + <goal>tag</goal> | |
211 | + </goals> | |
212 | + <configuration> | |
213 | + <skip>${dockerfile.skip}</skip> | |
214 | + <repository>${docker.repo}/${tb.docker.name}</repository> | |
215 | + <tag>${project.version}</tag> | |
216 | + </configuration> | |
217 | + </execution> | |
218 | + <execution> | |
219 | + <id>build-docker-tb-postgres-image</id> | |
220 | + <phase>pre-integration-test</phase> | |
221 | + <goals> | |
222 | + <goal>build</goal> | |
223 | + </goals> | |
224 | + <configuration> | |
225 | + <skip>${dockerfile.skip}</skip> | |
226 | + <repository>${docker.repo}/${tb-postgres.docker.name}</repository> | |
227 | + <verbose>true</verbose> | |
228 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
229 | + <contextDirectory>${project.build.directory}/docker-postgres</contextDirectory> | |
230 | + </configuration> | |
231 | + </execution> | |
232 | + <execution> | |
233 | + <id>tag-docker-tb-postgres-image</id> | |
234 | + <phase>pre-integration-test</phase> | |
235 | + <goals> | |
236 | + <goal>tag</goal> | |
237 | + </goals> | |
238 | + <configuration> | |
239 | + <skip>${dockerfile.skip}</skip> | |
240 | + <repository>${docker.repo}/${tb-postgres.docker.name}</repository> | |
241 | + <tag>${project.version}</tag> | |
242 | + </configuration> | |
243 | + </execution> | |
244 | + <execution> | |
245 | + <id>build-docker-tb-cassandra-image</id> | |
246 | + <phase>pre-integration-test</phase> | |
247 | + <goals> | |
248 | + <goal>build</goal> | |
249 | + </goals> | |
250 | + <configuration> | |
251 | + <skip>${dockerfile.skip}</skip> | |
252 | + <repository>${docker.repo}/${tb-cassandra.docker.name}</repository> | |
253 | + <verbose>true</verbose> | |
254 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
255 | + <contextDirectory>${project.build.directory}/docker-cassandra</contextDirectory> | |
256 | + </configuration> | |
257 | + </execution> | |
258 | + <execution> | |
259 | + <id>tag-docker-tb-cassandra-image</id> | |
260 | + <phase>pre-integration-test</phase> | |
261 | + <goals> | |
262 | + <goal>tag</goal> | |
263 | + </goals> | |
264 | + <configuration> | |
265 | + <skip>${dockerfile.skip}</skip> | |
266 | + <repository>${docker.repo}/${tb-cassandra.docker.name}</repository> | |
267 | + <tag>${project.version}</tag> | |
268 | + </configuration> | |
269 | + </execution> | |
270 | + </executions> | |
271 | + </plugin> | |
272 | + </plugins> | |
273 | + </build> | |
274 | + <profiles> | |
275 | + <profile> | |
276 | + <id>push-docker-image</id> | |
277 | + <activation> | |
278 | + <property> | |
279 | + <name>push-docker-image</name> | |
280 | + </property> | |
281 | + </activation> | |
282 | + <build> | |
283 | + <plugins> | |
284 | + <plugin> | |
285 | + <groupId>com.spotify</groupId> | |
286 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
287 | + <executions> | |
288 | + <execution> | |
289 | + <id>push-latest-docker-tb-image</id> | |
290 | + <phase>pre-integration-test</phase> | |
291 | + <goals> | |
292 | + <goal>push</goal> | |
293 | + </goals> | |
294 | + <configuration> | |
295 | + <tag>latest</tag> | |
296 | + <repository>${docker.repo}/${tb.docker.name}</repository> | |
297 | + </configuration> | |
298 | + </execution> | |
299 | + <execution> | |
300 | + <id>push-version-docker-tb-image</id> | |
301 | + <phase>pre-integration-test</phase> | |
302 | + <goals> | |
303 | + <goal>push</goal> | |
304 | + </goals> | |
305 | + <configuration> | |
306 | + <tag>${project.version}</tag> | |
307 | + <repository>${docker.repo}/${tb.docker.name}</repository> | |
308 | + </configuration> | |
309 | + </execution> | |
310 | + <execution> | |
311 | + <id>push-latest-docker-tb-postgres-image</id> | |
312 | + <phase>pre-integration-test</phase> | |
313 | + <goals> | |
314 | + <goal>push</goal> | |
315 | + </goals> | |
316 | + <configuration> | |
317 | + <tag>latest</tag> | |
318 | + <repository>${docker.repo}/${tb-postgres.docker.name}</repository> | |
319 | + </configuration> | |
320 | + </execution> | |
321 | + <execution> | |
322 | + <id>push-version-docker-tb-postgres-image</id> | |
323 | + <phase>pre-integration-test</phase> | |
324 | + <goals> | |
325 | + <goal>push</goal> | |
326 | + </goals> | |
327 | + <configuration> | |
328 | + <tag>${project.version}</tag> | |
329 | + <repository>${docker.repo}/${tb-postgres.docker.name}</repository> | |
330 | + </configuration> | |
331 | + </execution> | |
332 | + <execution> | |
333 | + <id>push-latest-docker-tb-cassandra-image</id> | |
334 | + <phase>pre-integration-test</phase> | |
335 | + <goals> | |
336 | + <goal>push</goal> | |
337 | + </goals> | |
338 | + <configuration> | |
339 | + <tag>latest</tag> | |
340 | + <repository>${docker.repo}/${tb-cassandra.docker.name}</repository> | |
341 | + </configuration> | |
342 | + </execution> | |
343 | + <execution> | |
344 | + <id>push-version-docker-tb-cassandra-image</id> | |
345 | + <phase>pre-integration-test</phase> | |
346 | + <goals> | |
347 | + <goal>push</goal> | |
348 | + </goals> | |
349 | + <configuration> | |
350 | + <tag>${project.version}</tag> | |
351 | + <repository>${docker.repo}/${tb-cassandra.docker.name}</repository> | |
352 | + </configuration> | |
353 | + </execution> | |
354 | + </executions> | |
355 | + </plugin> | |
356 | + </plugins> | |
357 | + </build> | |
358 | + </profile> | |
359 | + </profiles> | |
360 | + <repositories> | |
361 | + <repository> | |
362 | + <id>jenkins</id> | |
363 | + <name>Jenkins Repository</name> | |
364 | + <url>http://repo.jenkins-ci.org/releases</url> | |
365 | + <snapshots> | |
366 | + <enabled>false</enabled> | |
367 | + </snapshots> | |
368 | + </repository> | |
369 | + </repositories> | |
370 | +</project> | ... | ... |
... | ... | @@ -111,19 +111,72 @@ |
111 | 111 | <goals> |
112 | 112 | <goal>build</goal> |
113 | 113 | </goals> |
114 | + <configuration> | |
115 | + <skip>${dockerfile.skip}</skip> | |
116 | + <repository>${docker.repo}/${docker.name}</repository> | |
117 | + <verbose>true</verbose> | |
118 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
119 | + <contextDirectory>${project.build.directory}</contextDirectory> | |
120 | + </configuration> | |
121 | + </execution> | |
122 | + <execution> | |
123 | + <id>tag-docker-image</id> | |
124 | + <phase>pre-integration-test</phase> | |
125 | + <goals> | |
126 | + <goal>tag</goal> | |
127 | + </goals> | |
128 | + <configuration> | |
129 | + <skip>${dockerfile.skip}</skip> | |
130 | + <repository>${docker.repo}/${docker.name}</repository> | |
131 | + <tag>${project.version}</tag> | |
132 | + </configuration> | |
114 | 133 | </execution> |
115 | 134 | </executions> |
116 | - <configuration> | |
117 | - <skip>${dockerfile.skip}</skip> | |
118 | - <repository>${docker.repo}/${docker.name}</repository> | |
119 | - <tag>${project.version}</tag> | |
120 | - <verbose>true</verbose> | |
121 | - <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
122 | - <contextDirectory>${project.build.directory}</contextDirectory> | |
123 | - </configuration> | |
124 | 135 | </plugin> |
125 | 136 | </plugins> |
126 | 137 | </build> |
138 | + <profiles> | |
139 | + <profile> | |
140 | + <id>push-docker-image</id> | |
141 | + <activation> | |
142 | + <property> | |
143 | + <name>push-docker-image</name> | |
144 | + </property> | |
145 | + </activation> | |
146 | + <build> | |
147 | + <plugins> | |
148 | + <plugin> | |
149 | + <groupId>com.spotify</groupId> | |
150 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
151 | + <executions> | |
152 | + <execution> | |
153 | + <id>push-latest-docker-image</id> | |
154 | + <phase>pre-integration-test</phase> | |
155 | + <goals> | |
156 | + <goal>push</goal> | |
157 | + </goals> | |
158 | + <configuration> | |
159 | + <tag>latest</tag> | |
160 | + <repository>${docker.repo}/${docker.name}</repository> | |
161 | + </configuration> | |
162 | + </execution> | |
163 | + <execution> | |
164 | + <id>push-version-docker-image</id> | |
165 | + <phase>pre-integration-test</phase> | |
166 | + <goals> | |
167 | + <goal>push</goal> | |
168 | + </goals> | |
169 | + <configuration> | |
170 | + <tag>${project.version}</tag> | |
171 | + <repository>${docker.repo}/${docker.name}</repository> | |
172 | + </configuration> | |
173 | + </execution> | |
174 | + </executions> | |
175 | + </plugin> | |
176 | + </plugins> | |
177 | + </build> | |
178 | + </profile> | |
179 | + </profiles> | |
127 | 180 | <repositories> |
128 | 181 | <repository> |
129 | 182 | <id>jenkins</id> | ... | ... |
... | ... | @@ -111,19 +111,72 @@ |
111 | 111 | <goals> |
112 | 112 | <goal>build</goal> |
113 | 113 | </goals> |
114 | + <configuration> | |
115 | + <skip>${dockerfile.skip}</skip> | |
116 | + <repository>${docker.repo}/${docker.name}</repository> | |
117 | + <verbose>true</verbose> | |
118 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
119 | + <contextDirectory>${project.build.directory}</contextDirectory> | |
120 | + </configuration> | |
121 | + </execution> | |
122 | + <execution> | |
123 | + <id>tag-docker-image</id> | |
124 | + <phase>pre-integration-test</phase> | |
125 | + <goals> | |
126 | + <goal>tag</goal> | |
127 | + </goals> | |
128 | + <configuration> | |
129 | + <skip>${dockerfile.skip}</skip> | |
130 | + <repository>${docker.repo}/${docker.name}</repository> | |
131 | + <tag>${project.version}</tag> | |
132 | + </configuration> | |
114 | 133 | </execution> |
115 | 134 | </executions> |
116 | - <configuration> | |
117 | - <skip>${dockerfile.skip}</skip> | |
118 | - <repository>${docker.repo}/${docker.name}</repository> | |
119 | - <tag>${project.version}</tag> | |
120 | - <verbose>true</verbose> | |
121 | - <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
122 | - <contextDirectory>${project.build.directory}</contextDirectory> | |
123 | - </configuration> | |
124 | 135 | </plugin> |
125 | 136 | </plugins> |
126 | 137 | </build> |
138 | + <profiles> | |
139 | + <profile> | |
140 | + <id>push-docker-image</id> | |
141 | + <activation> | |
142 | + <property> | |
143 | + <name>push-docker-image</name> | |
144 | + </property> | |
145 | + </activation> | |
146 | + <build> | |
147 | + <plugins> | |
148 | + <plugin> | |
149 | + <groupId>com.spotify</groupId> | |
150 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
151 | + <executions> | |
152 | + <execution> | |
153 | + <id>push-latest-docker-image</id> | |
154 | + <phase>pre-integration-test</phase> | |
155 | + <goals> | |
156 | + <goal>push</goal> | |
157 | + </goals> | |
158 | + <configuration> | |
159 | + <tag>latest</tag> | |
160 | + <repository>${docker.repo}/${docker.name}</repository> | |
161 | + </configuration> | |
162 | + </execution> | |
163 | + <execution> | |
164 | + <id>push-version-docker-image</id> | |
165 | + <phase>pre-integration-test</phase> | |
166 | + <goals> | |
167 | + <goal>push</goal> | |
168 | + </goals> | |
169 | + <configuration> | |
170 | + <tag>${project.version}</tag> | |
171 | + <repository>${docker.repo}/${docker.name}</repository> | |
172 | + </configuration> | |
173 | + </execution> | |
174 | + </executions> | |
175 | + </plugin> | |
176 | + </plugins> | |
177 | + </build> | |
178 | + </profile> | |
179 | + </profiles> | |
127 | 180 | <repositories> |
128 | 181 | <repository> |
129 | 182 | <id>jenkins</id> | ... | ... |
... | ... | @@ -111,19 +111,72 @@ |
111 | 111 | <goals> |
112 | 112 | <goal>build</goal> |
113 | 113 | </goals> |
114 | + <configuration> | |
115 | + <skip>${dockerfile.skip}</skip> | |
116 | + <repository>${docker.repo}/${docker.name}</repository> | |
117 | + <verbose>true</verbose> | |
118 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
119 | + <contextDirectory>${project.build.directory}</contextDirectory> | |
120 | + </configuration> | |
121 | + </execution> | |
122 | + <execution> | |
123 | + <id>tag-docker-image</id> | |
124 | + <phase>pre-integration-test</phase> | |
125 | + <goals> | |
126 | + <goal>tag</goal> | |
127 | + </goals> | |
128 | + <configuration> | |
129 | + <skip>${dockerfile.skip}</skip> | |
130 | + <repository>${docker.repo}/${docker.name}</repository> | |
131 | + <tag>${project.version}</tag> | |
132 | + </configuration> | |
114 | 133 | </execution> |
115 | 134 | </executions> |
116 | - <configuration> | |
117 | - <skip>${dockerfile.skip}</skip> | |
118 | - <repository>${docker.repo}/${docker.name}</repository> | |
119 | - <tag>${project.version}</tag> | |
120 | - <verbose>true</verbose> | |
121 | - <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
122 | - <contextDirectory>${project.build.directory}</contextDirectory> | |
123 | - </configuration> | |
124 | 135 | </plugin> |
125 | 136 | </plugins> |
126 | 137 | </build> |
138 | + <profiles> | |
139 | + <profile> | |
140 | + <id>push-docker-image</id> | |
141 | + <activation> | |
142 | + <property> | |
143 | + <name>push-docker-image</name> | |
144 | + </property> | |
145 | + </activation> | |
146 | + <build> | |
147 | + <plugins> | |
148 | + <plugin> | |
149 | + <groupId>com.spotify</groupId> | |
150 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
151 | + <executions> | |
152 | + <execution> | |
153 | + <id>push-latest-docker-image</id> | |
154 | + <phase>pre-integration-test</phase> | |
155 | + <goals> | |
156 | + <goal>push</goal> | |
157 | + </goals> | |
158 | + <configuration> | |
159 | + <tag>latest</tag> | |
160 | + <repository>${docker.repo}/${docker.name}</repository> | |
161 | + </configuration> | |
162 | + </execution> | |
163 | + <execution> | |
164 | + <id>push-version-docker-image</id> | |
165 | + <phase>pre-integration-test</phase> | |
166 | + <goals> | |
167 | + <goal>push</goal> | |
168 | + </goals> | |
169 | + <configuration> | |
170 | + <tag>${project.version}</tag> | |
171 | + <repository>${docker.repo}/${docker.name}</repository> | |
172 | + </configuration> | |
173 | + </execution> | |
174 | + </executions> | |
175 | + </plugin> | |
176 | + </plugins> | |
177 | + </build> | |
178 | + </profile> | |
179 | + </profiles> | |
127 | 180 | <repositories> |
128 | 181 | <repository> |
129 | 182 | <id>jenkins</id> | ... | ... |
... | ... | @@ -311,16 +311,27 @@ |
311 | 311 | <goals> |
312 | 312 | <goal>build</goal> |
313 | 313 | </goals> |
314 | + <configuration> | |
315 | + <skip>${dockerfile.skip}</skip> | |
316 | + <repository>${docker.repo}/${docker.name}</repository> | |
317 | + <verbose>true</verbose> | |
318 | + <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
319 | + <contextDirectory>${project.build.directory}</contextDirectory> | |
320 | + </configuration> | |
321 | + </execution> | |
322 | + <execution> | |
323 | + <id>tag-docker-image</id> | |
324 | + <phase>pre-integration-test</phase> | |
325 | + <goals> | |
326 | + <goal>tag</goal> | |
327 | + </goals> | |
328 | + <configuration> | |
329 | + <skip>${dockerfile.skip}</skip> | |
330 | + <repository>${docker.repo}/${docker.name}</repository> | |
331 | + <tag>${project.version}</tag> | |
332 | + </configuration> | |
314 | 333 | </execution> |
315 | 334 | </executions> |
316 | - <configuration> | |
317 | - <skip>${dockerfile.skip}</skip> | |
318 | - <repository>${docker.repo}/${docker.name}</repository> | |
319 | - <tag>${project.version}</tag> | |
320 | - <verbose>true</verbose> | |
321 | - <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled> | |
322 | - <contextDirectory>${project.build.directory}</contextDirectory> | |
323 | - </configuration> | |
324 | 335 | </plugin> |
325 | 336 | </plugins> |
326 | 337 | </build> |
... | ... | @@ -358,6 +369,46 @@ |
358 | 369 | </plugins> |
359 | 370 | </build> |
360 | 371 | </profile> |
372 | + <profile> | |
373 | + <id>push-docker-image</id> | |
374 | + <activation> | |
375 | + <property> | |
376 | + <name>push-docker-image</name> | |
377 | + </property> | |
378 | + </activation> | |
379 | + <build> | |
380 | + <plugins> | |
381 | + <plugin> | |
382 | + <groupId>com.spotify</groupId> | |
383 | + <artifactId>dockerfile-maven-plugin</artifactId> | |
384 | + <executions> | |
385 | + <execution> | |
386 | + <id>push-latest-docker-image</id> | |
387 | + <phase>pre-integration-test</phase> | |
388 | + <goals> | |
389 | + <goal>push</goal> | |
390 | + </goals> | |
391 | + <configuration> | |
392 | + <tag>latest</tag> | |
393 | + <repository>${docker.repo}/${docker.name}</repository> | |
394 | + </configuration> | |
395 | + </execution> | |
396 | + <execution> | |
397 | + <id>push-version-docker-image</id> | |
398 | + <phase>pre-integration-test</phase> | |
399 | + <goals> | |
400 | + <goal>push</goal> | |
401 | + </goals> | |
402 | + <configuration> | |
403 | + <tag>${project.version}</tag> | |
404 | + <repository>${docker.repo}/${docker.name}</repository> | |
405 | + </configuration> | |
406 | + </execution> | |
407 | + </executions> | |
408 | + </plugin> | |
409 | + </plugins> | |
410 | + </build> | |
411 | + </profile> | |
361 | 412 | </profiles> |
362 | 413 | <repositories> |
363 | 414 | <repository> | ... | ... |