Problem:
Wenn ich ThingsBoard mit dem Befehl in einem Docker-Container ausführe
sudo java -jar /usr/share/thingsboard/bin/thingsboard.jar
Fehler, den ich erhalten habe:
ERROR: "ts_kv" is not partitioned
Wenn ich ThingsBoard jedoch als Dienst auf meinem lokalen Ubuntu-Rechner ausführe, funktioniert alles ohne diesen Fehler einwandfrei. Der Fehler tritt nicht auf, wenn ThingsBoard lokal ausgeführt wird, und es funktioniert wie erwartet.
Also, wie führe ich mein thingboard.deb in Conatiner aus?
Ich verwende eine docker-compose.yml, um ThingsBoard und TimescaleDB bereitzustellen. Hier ist die Konfiguration für den Thingsboard-Dienst in meiner docker-compose.yml:
version: '3.8'
services:
db:
image: timescale/timescaledb:latest-pg12
container_name: timescale_db
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_DB=thingsboard
volumes:
- timescale_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- thingsboard_network
thingsboard:
image: tb:v-003
container_name: thingsboard
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/thingsboard
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=password
- LOG_FILENAME=thingsboard.out
- LOADER_PATH=/usr/share/thingsboard/conf,/usr/share/thingsboard/extensions
- SQL_DATA_FOLDER=/usr/share/thingsboard/data/sql
- LOG_FOLDER=/var/log/thingsboard
volumes:
- thingsboard_data:/usr/share/thingsboard/data
- ~/thingsboard.yml:/usr/share/thingsboard/conf/thingsboard.yml
- ~/thingsboard.conf:/usr/share/thingsboard/conf/thingsboard.conf.template
ports:
- "8080:8080"
- "1883:1883"
- "5683:5683"
networks:
- thingsboard_network
# /usr/share/thingsboard/bin/install/install.sh --loadDemo && \
command: >
/bin/bash -c "
envsubst < /usr/share/thingsboard/conf/thingsboard.conf.template > /usr/share/thingsboard/conf/thingsboard.conf && \
java -jar /usr/share/thingsboard/bin/thingsboard.jar $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardServerApplication \
-Dspring.jpa.hibernate.ddl-auto=none \
-Dlogging.config=${CONF_FOLDER}/logback.xml \
org.springframework.boot.loader.PropertiesLauncher
"
networks:
thingsboard_network:
driver: bridge
volumes:
timescale_data:
thingsboard_data:
java -jar /usr/share/thingsboard/bin/thingsboard.jar $JAVA_OPTS -Dloader.main=org.thingsboard.server.ThingsboardServerApplication \
-Dspring.jpa.hibernate.ddl-auto=none \
-Dlogging.config=${CONF_FOLDER}/logback.xml \
org.springframework.boot.loader.PropertiesLauncher
Wenn ich es als Dienst in Docker ausführe, ist dies nicht zulässig.
Was ich versucht habe:
- Ich habe bestätigt, dass TimescaleDB ordnungsgemäß im Docker-Container ausgeführt wird.
- Thingsboard.deb funktioniert einwandfrei auf meinem lokalen Ubuntu-Computer, wenn es als Dienst ausgeführt wird – Ich vermute, dass das Problem mit der Umgebung im Docker-Container zusammenhängt.
- Der Fehler scheint mit der Partitionierung des Datenbankschemas zusammenzuhängen. Ich habe dieses Problem in meiner lokalen Installation nicht gesehen, bin aber in der Docker-Umgebung darauf gestoßen.
Ich muss meine benutzerdefinierte Version ausführen .deb-Version von ThingsBoard in einem Docker-Container und vermeiden Sie den Fehler FEHLER: „ts_kv“ ist nicht partitioniert.