Docker build for transports.
This commit is contained in:
parent
5242864ccc
commit
0ae28408c9
@ -16,6 +16,8 @@
|
||||
package org.thingsboard.server.common.transport.service;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.kafka.clients.admin.CreateTopicsResult;
|
||||
import org.apache.kafka.clients.admin.NewTopic;
|
||||
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
||||
import org.apache.kafka.clients.producer.Callback;
|
||||
import org.apache.kafka.clients.producer.RecordMetadata;
|
||||
@ -42,12 +44,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
|
||||
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceCredentialsResponseMsg;
|
||||
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceTokenRequestMsg;
|
||||
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceX509CertRequestMsg;
|
||||
import org.thingsboard.server.kafka.AsyncCallbackTemplate;
|
||||
import org.thingsboard.server.kafka.TBKafkaConsumerTemplate;
|
||||
import org.thingsboard.server.kafka.TBKafkaProducerTemplate;
|
||||
import org.thingsboard.server.kafka.TbKafkaRequestTemplate;
|
||||
import org.thingsboard.server.kafka.TbKafkaSettings;
|
||||
import org.thingsboard.server.kafka.TbNodeIdProvider;
|
||||
import org.thingsboard.server.kafka.*;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
@ -136,9 +133,19 @@ public class RemoteTransportService extends AbstractTransportService {
|
||||
ruleEngineProducer = ruleEngineProducerBuilder.build();
|
||||
ruleEngineProducer.init();
|
||||
|
||||
String notificationsTopicName = notificationsTopic + "." + nodeIdProvider.getNodeId();
|
||||
|
||||
try {
|
||||
TBKafkaAdmin admin = new TBKafkaAdmin(kafkaSettings);
|
||||
CreateTopicsResult result = admin.createTopic(new NewTopic(notificationsTopicName, 1, (short) 1));
|
||||
result.all().get();
|
||||
} catch (Exception e) {
|
||||
log.trace("Failed to create topic: {}", e.getMessage(), e);
|
||||
}
|
||||
|
||||
TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<ToTransportMsg> mainConsumerBuilder = TBKafkaConsumerTemplate.builder();
|
||||
mainConsumerBuilder.settings(kafkaSettings);
|
||||
mainConsumerBuilder.topic(notificationsTopic + "." + nodeIdProvider.getNodeId());
|
||||
mainConsumerBuilder.topic(notificationsTopicName);
|
||||
mainConsumerBuilder.clientId("transport-" + nodeIdProvider.getNodeId());
|
||||
mainConsumerBuilder.groupId("transport");
|
||||
mainConsumerBuilder.autoCommit(true);
|
||||
|
||||
@ -5,6 +5,8 @@ JS_EXECUTOR_DOCKER_NAME=tb-js-executor
|
||||
TB_NODE_DOCKER_NAME=tb-node
|
||||
WEB_UI_DOCKER_NAME=tb-web-ui
|
||||
MQTT_TRANSPORT_DOCKER_NAME=tb-mqtt-transport
|
||||
HTTP_TRANSPORT_DOCKER_NAME=tb-http-transport
|
||||
COAP_TRANSPORT_DOCKER_NAME=tb-coap-transport
|
||||
|
||||
TB_VERSION=2.2.0-SNAPSHOT
|
||||
|
||||
|
||||
@ -56,7 +56,6 @@ services:
|
||||
image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "8080"
|
||||
- "5683:5683/udp"
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
@ -96,6 +95,50 @@ services:
|
||||
- tb-mqtt-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-http-transport1:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "8081"
|
||||
environment:
|
||||
TB_KAFKA_SERVERS: kafka:9092
|
||||
env_file:
|
||||
- tb-http-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-http-transport2:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "8081"
|
||||
environment:
|
||||
TB_KAFKA_SERVERS: kafka:9092
|
||||
env_file:
|
||||
- tb-http-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-coap-transport1:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "5683"
|
||||
environment:
|
||||
TB_KAFKA_SERVERS: kafka:9092
|
||||
env_file:
|
||||
- tb-coap-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-coap-transport2:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "5683"
|
||||
environment:
|
||||
TB_KAFKA_SERVERS: kafka:9092
|
||||
env_file:
|
||||
- tb-coap-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-web-ui1:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}"
|
||||
@ -116,6 +159,16 @@ services:
|
||||
TB_PORT: 8080
|
||||
env_file:
|
||||
- tb-web-ui.env
|
||||
coap-lb:
|
||||
restart: always
|
||||
container_name: coap-loadbalancer
|
||||
image: instantlinux/udp-nginx-proxy
|
||||
ports:
|
||||
- "5683:5683/udp"
|
||||
environment:
|
||||
BACKENDS: tb-coap-transport1 tb-coap-transport2
|
||||
PORT_BACKEND: 5683
|
||||
PORT_LISTEN: 5683
|
||||
web:
|
||||
restart: always
|
||||
container_name: haproxy-certbot
|
||||
@ -140,3 +193,5 @@ services:
|
||||
- tb-web-ui2
|
||||
- tb-mqtt-transport1
|
||||
- tb-mqtt-transport2
|
||||
- tb-http-transport1
|
||||
- tb-http-transport2
|
||||
|
||||
@ -39,6 +39,7 @@ frontend http-in
|
||||
acl letsencrypt_http_acl path_beg /.well-known/acme-challenge/
|
||||
redirect scheme https if !letsencrypt_http_acl !transport_http_acl
|
||||
use_backend letsencrypt_http if letsencrypt_http_acl
|
||||
use_backend tb-http-backend if transport_http_acl
|
||||
|
||||
default_backend tb-web-backend
|
||||
|
||||
@ -72,3 +73,10 @@ backend tb-mqtt-backend
|
||||
option log-health-checks
|
||||
server tbMqtt1 tb-mqtt-transport1:1883 check
|
||||
server tbMqtt2 tb-mqtt-transport2:1883 check
|
||||
|
||||
backend tb-http-backend
|
||||
balance leastconn
|
||||
option tcp-check
|
||||
option log-health-checks
|
||||
server tbHttp1 tb-http-transport1:8081 check
|
||||
server tbHttp2 tb-http-transport2:8081 check
|
||||
|
||||
6
msa/docker/tb-coap-transport.env
Normal file
6
msa/docker/tb-coap-transport.env
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
COAP_BIND_ADDRESS=0.0.0.0
|
||||
COAP_BIND_PORT=5683
|
||||
COAP_TIMEOUT=10000
|
||||
|
||||
TB_KAFKA_SERVERS=localhost:9092
|
||||
6
msa/docker/tb-http-transport.env
Normal file
6
msa/docker/tb-http-transport.env
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
HTTP_BIND_ADDRESS=0.0.0.0
|
||||
HTTP_BIND_PORT=8081
|
||||
HTTP_REQUEST_TIMEOUT=60000
|
||||
|
||||
TB_KAFKA_SERVERS=localhost:9092
|
||||
31
msa/transport/coap/docker/Dockerfile
Normal file
31
msa/transport/coap/docker/Dockerfile
Normal file
@ -0,0 +1,31 @@
|
||||
#
|
||||
# Copyright © 2016-2018 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
FROM openjdk:8-jre
|
||||
|
||||
COPY logback.xml ${pkg.name}.conf start-tb-coap-transport.sh ${pkg.name}.deb /tmp/
|
||||
|
||||
RUN chmod a+x /tmp/*.sh \
|
||||
&& mv /tmp/start-tb-coap-transport.sh /usr/bin
|
||||
|
||||
RUN dpkg -i /tmp/${pkg.name}.deb
|
||||
|
||||
RUN update-rc.d ${pkg.name} disable
|
||||
|
||||
RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \
|
||||
&& mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf
|
||||
|
||||
CMD ["start-tb-coap-transport.sh"]
|
||||
50
msa/transport/coap/docker/logback.xml
Normal file
50
msa/transport/coap/docker/logback.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2018 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<!DOCTYPE configuration>
|
||||
<configuration scan="true" scanPeriod="10 seconds">
|
||||
|
||||
<appender name="fileLogAppender"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>/var/log/${pkg.name}/${pkg.name}.log</file>
|
||||
<rollingPolicy
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>/var/log/${pkg.name}/${pkg.name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>3GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="org.thingsboard.server" level="INFO" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="fileLogAppender"/>
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
29
msa/transport/coap/docker/start-tb-coap-transport.sh
Executable file
29
msa/transport/coap/docker/start-tb-coap-transport.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright © 2016-2018 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
CONF_FOLDER="${pkg.installFolder}/conf"
|
||||
jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||
configfile=${pkg.name}.conf
|
||||
|
||||
source "${CONF_FOLDER}/${configfile}"
|
||||
|
||||
echo "Starting '${project.name}' ..."
|
||||
|
||||
exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.coap.ThingsboardCoapTransportApplication \
|
||||
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||
-Dlogging.config=${CONF_FOLDER}/logback.xml \
|
||||
org.springframework.boot.loader.PropertiesLauncher
|
||||
23
msa/transport/coap/docker/tb-coap-transport.conf
Normal file
23
msa/transport/coap/docker/tb-coap-transport.conf
Normal file
@ -0,0 +1,23 @@
|
||||
#
|
||||
# Copyright © 2016-2018 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xloggc:@pkg.logFolder@/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError"
|
||||
export LOG_FILENAME=${pkg.name}.out
|
||||
export LOADER_PATH=${pkg.installFolder}/conf
|
||||
137
msa/transport/coap/pom.xml
Normal file
137
msa/transport/coap/pom.xml
Normal file
@ -0,0 +1,137 @@
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2018 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.thingsboard.msa</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<artifactId>transport</artifactId>
|
||||
</parent>
|
||||
<groupId>org.thingsboard.msa.transport</groupId>
|
||||
<artifactId>coap</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>ThingsBoard COAP Transport Microservice</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
<description>ThingsBoard COAP Transport Microservice</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../../..</main.dir>
|
||||
<pkg.name>tb-coap-transport</pkg.name>
|
||||
<docker.name>tb-coap-transport</docker.name>
|
||||
<pkg.user>thingsboard</pkg.user>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>coap</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>deb</classifier>
|
||||
<type>deb</type>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-tb-coap-transport-deb</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>coap</artifactId>
|
||||
<classifier>deb</classifier>
|
||||
<type>deb</type>
|
||||
<destFileName>${pkg.name}.deb</destFileName>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-docker-config</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-docker-image</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<skip>${dockerfile.skip}</skip>
|
||||
<repository>${docker.repo}/${docker.name}</repository>
|
||||
<tag>${project.version}</tag>
|
||||
<verbose>true</verbose>
|
||||
<googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
|
||||
<contextDirectory>${project.build.directory}</contextDirectory>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>jenkins</id>
|
||||
<name>Jenkins Repository</name>
|
||||
<url>http://repo.jenkins-ci.org/releases</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
</project>
|
||||
31
msa/transport/http/docker/Dockerfile
Normal file
31
msa/transport/http/docker/Dockerfile
Normal file
@ -0,0 +1,31 @@
|
||||
#
|
||||
# Copyright © 2016-2018 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
FROM openjdk:8-jre
|
||||
|
||||
COPY logback.xml ${pkg.name}.conf start-tb-http-transport.sh ${pkg.name}.deb /tmp/
|
||||
|
||||
RUN chmod a+x /tmp/*.sh \
|
||||
&& mv /tmp/start-tb-http-transport.sh /usr/bin
|
||||
|
||||
RUN dpkg -i /tmp/${pkg.name}.deb
|
||||
|
||||
RUN update-rc.d ${pkg.name} disable
|
||||
|
||||
RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \
|
||||
&& mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf
|
||||
|
||||
CMD ["start-tb-http-transport.sh"]
|
||||
50
msa/transport/http/docker/logback.xml
Normal file
50
msa/transport/http/docker/logback.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2018 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<!DOCTYPE configuration>
|
||||
<configuration scan="true" scanPeriod="10 seconds">
|
||||
|
||||
<appender name="fileLogAppender"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>/var/log/${pkg.name}/${pkg.name}.log</file>
|
||||
<rollingPolicy
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>/var/log/${pkg.name}/${pkg.name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>3GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="org.thingsboard.server" level="INFO" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="fileLogAppender"/>
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
29
msa/transport/http/docker/start-tb-http-transport.sh
Executable file
29
msa/transport/http/docker/start-tb-http-transport.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright © 2016-2018 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
CONF_FOLDER="${pkg.installFolder}/conf"
|
||||
jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||
configfile=${pkg.name}.conf
|
||||
|
||||
source "${CONF_FOLDER}/${configfile}"
|
||||
|
||||
echo "Starting '${project.name}' ..."
|
||||
|
||||
exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.http.ThingsboardHttpTransportApplication \
|
||||
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||
-Dlogging.config=${CONF_FOLDER}/logback.xml \
|
||||
org.springframework.boot.loader.PropertiesLauncher
|
||||
23
msa/transport/http/docker/tb-http-transport.conf
Normal file
23
msa/transport/http/docker/tb-http-transport.conf
Normal file
@ -0,0 +1,23 @@
|
||||
#
|
||||
# Copyright © 2016-2018 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xloggc:@pkg.logFolder@/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError"
|
||||
export LOG_FILENAME=${pkg.name}.out
|
||||
export LOADER_PATH=${pkg.installFolder}/conf
|
||||
137
msa/transport/http/pom.xml
Normal file
137
msa/transport/http/pom.xml
Normal file
@ -0,0 +1,137 @@
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2018 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.thingsboard.msa</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<artifactId>transport</artifactId>
|
||||
</parent>
|
||||
<groupId>org.thingsboard.msa.transport</groupId>
|
||||
<artifactId>http</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>ThingsBoard HTTP Transport Microservice</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
<description>ThingsBoard HTTP Transport Microservice</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../../..</main.dir>
|
||||
<pkg.name>tb-http-transport</pkg.name>
|
||||
<docker.name>tb-http-transport</docker.name>
|
||||
<pkg.user>thingsboard</pkg.user>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>http</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>deb</classifier>
|
||||
<type>deb</type>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-tb-http-transport-deb</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>http</artifactId>
|
||||
<classifier>deb</classifier>
|
||||
<type>deb</type>
|
||||
<destFileName>${pkg.name}.deb</destFileName>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-docker-config</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>docker</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-docker-image</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<skip>${dockerfile.skip}</skip>
|
||||
<repository>${docker.repo}/${docker.name}</repository>
|
||||
<tag>${project.version}</tag>
|
||||
<verbose>true</verbose>
|
||||
<googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
|
||||
<contextDirectory>${project.build.directory}</contextDirectory>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>jenkins</id>
|
||||
<name>Jenkins Repository</name>
|
||||
<url>http://repo.jenkins-ci.org/releases</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
</project>
|
||||
@ -36,6 +36,8 @@
|
||||
|
||||
<modules>
|
||||
<module>mqtt</module>
|
||||
<module>http</module>
|
||||
<module>coap</module>
|
||||
</modules>
|
||||
|
||||
<build>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package org.thingsboard.server.mqtt; /**
|
||||
/**
|
||||
* Copyright © 2016-2018 The Thingsboard Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -14,13 +14,12 @@ package org.thingsboard.server.mqtt; /**
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thingsboard.server.http;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.SpringBootConfiguration;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package org.thingsboard.server.mqtt; /**
|
||||
/**
|
||||
* Copyright © 2016-2018 The Thingsboard Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -14,6 +14,8 @@ package org.thingsboard.server.mqtt; /**
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thingsboard.server.mqtt;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.SpringBootConfiguration;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user