Browse Source

Add hybrid mode for docker-compose. Update postgreSQL version to 11.

pull/2471/head
Igor Kulikov 7 years ago
parent
commit
0705ac4926
  1. 6
      docker/.env
  2. 12
      docker/compose-utils.sh
  3. 18
      docker/docker-compose.hybrid.yml
  4. 5
      docker/tb-node.cassandra.env
  5. 9
      docker/tb-node.hybrid.env
  6. 1
      docker/tb-node.postgres.env
  7. 2
      msa/tb/README.md
  8. 18
      msa/tb/docker-cassandra/Dockerfile
  9. 18
      msa/tb/docker-cassandra/start-db.sh
  10. 3
      msa/tb/docker-cassandra/stop-db.sh
  11. 7
      msa/tb/docker-postgres/Dockerfile
  12. 6
      msa/tb/docker-postgres/start-db.sh
  13. 4
      msa/tb/docker-postgres/stop-db.sh
  14. 1
      msa/tb/docker-tb/Dockerfile

6
docker/.env

@ -10,9 +10,9 @@ COAP_TRANSPORT_DOCKER_NAME=tb-coap-transport
TB_VERSION=latest TB_VERSION=latest
# Database used by ThingsBoard, can be either postgres (PostgreSQL) or cassandra (Cassandra). # Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database).
# According to the database type corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.cassandra.yml for details). # According to the database type corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.hybrid.yml for details).
DATABASE=postgres DATABASE=hybrid
LOAD_BALANCER_NAME=haproxy-certbot LOAD_BALANCER_NAME=haproxy-certbot

12
docker/compose-utils.sh

@ -22,11 +22,11 @@ function additionalComposeArgs() {
postgres) postgres)
ADDITIONAL_COMPOSE_ARGS="-f docker-compose.postgres.yml" ADDITIONAL_COMPOSE_ARGS="-f docker-compose.postgres.yml"
;; ;;
cassandra) hybrid)
ADDITIONAL_COMPOSE_ARGS="-f docker-compose.cassandra.yml" ADDITIONAL_COMPOSE_ARGS="-f docker-compose.hybrid.yml"
;; ;;
*) *)
echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or cassandra." >&2 echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or hybrid." >&2
exit 1 exit 1
esac esac
echo $ADDITIONAL_COMPOSE_ARGS echo $ADDITIONAL_COMPOSE_ARGS
@ -39,11 +39,11 @@ function additionalStartupServices() {
postgres) postgres)
ADDITIONAL_STARTUP_SERVICES=postgres ADDITIONAL_STARTUP_SERVICES=postgres
;; ;;
cassandra) hybrid)
ADDITIONAL_STARTUP_SERVICES=cassandra ADDITIONAL_STARTUP_SERVICES="postgres cassandra"
;; ;;
*) *)
echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or cassandra." >&2 echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or hybrid." >&2
exit 1 exit 1
esac esac
echo $ADDITIONAL_STARTUP_SERVICES echo $ADDITIONAL_STARTUP_SERVICES

18
docker/docker-compose.cassandra.yml → docker/docker-compose.hybrid.yml

@ -17,24 +17,36 @@
version: '2.2' version: '2.2'
services: services:
postgres:
restart: always
image: "postgres:11.6"
ports:
- "5432"
environment:
POSTGRES_DB: thingsboard
POSTGRES_PASSWORD: postgres
volumes:
- ./tb-node/postgres:/var/lib/postgresql/data
cassandra: cassandra:
restart: always restart: always
image: "cassandra:3.11.3" image: "cassandra:3.11.3"
ports: ports:
- "9042" - "9042"
volumes: volumes:
- ./tb-node/cassandra:/var/lib/cassandra - ./tb-node/cassandra:/var/lib/cassandra
tb1: tb1:
env_file: env_file:
- tb-node.cassandra.env - tb-node.hybrid.env
depends_on: depends_on:
- kafka - kafka
- redis - redis
- postgres
- cassandra - cassandra
tb2: tb2:
env_file: env_file:
- tb-node.cassandra.env - tb-node.hybrid.env
depends_on: depends_on:
- kafka - kafka
- redis - redis
- postgres
- cassandra - cassandra

5
docker/tb-node.cassandra.env

@ -1,5 +0,0 @@
# ThingsBoard server configuration for Cassandra database
DATABASE_TS_TYPE=cassandra
DATABASE_ENTITIES_TYPE=cassandra
CASSANDRA_URL=cassandra:9042

9
docker/tb-node.hybrid.env

@ -0,0 +1,9 @@
# ThingsBoard server configuration for Cassandra database
DATABASE_TS_TYPE=cassandra
CASSANDRA_URL=cassandra:9042
SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=postgres

1
docker/tb-node.postgres.env

@ -1,7 +1,6 @@
# ThingsBoard server configuration for PostgreSQL database # ThingsBoard server configuration for PostgreSQL database
DATABASE_TS_TYPE=sql DATABASE_TS_TYPE=sql
DATABASE_ENTITIES_TYPE=sql
SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard

2
msa/tb/README.md

@ -4,7 +4,7 @@ This project provides the build for the ThingsBoard single docker images.
* `thingsboard/tb` - single instance of ThingsBoard with embedded HSQLDB database. * `thingsboard/tb` - single instance of ThingsBoard with embedded HSQLDB database.
* `thingsboard/tb-postgres` - single instance of ThingsBoard with PostgreSQL database. * `thingsboard/tb-postgres` - single instance of ThingsBoard with PostgreSQL database.
* `thingsboard/tb-cassandra` - single instance of ThingsBoard with Cassandra database. * `thingsboard/tb-cassandra` - single instance of ThingsBoard with Hybrid PostgreSQL (entities) and Cassandra (timeseries) database.
## Running ## Running

18
msa/tb/docker-cassandra/Dockerfile

@ -18,13 +18,19 @@ FROM thingsboard/openjdk8
RUN apt-get update RUN apt-get update
RUN apt-get install -y curl nmap procps RUN apt-get install -y curl nmap procps
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' | tee --append /etc/apt/sources.list.d/pgdg.list > /dev/null
RUN curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN echo 'deb http://www.apache.org/dist/cassandra/debian 311x main' | tee --append /etc/apt/sources.list.d/cassandra.list > /dev/null RUN echo 'deb http://www.apache.org/dist/cassandra/debian 311x main' | tee --append /etc/apt/sources.list.d/cassandra.list > /dev/null
RUN curl -L https://www.apache.org/dist/cassandra/KEYS | apt-key add - RUN curl -L https://www.apache.org/dist/cassandra/KEYS | apt-key add -
RUN apt-get update RUN apt-get update
RUN apt-get install -y cassandra cassandra-tools RUN apt-get install -y cassandra cassandra-tools postgresql-11
RUN update-rc.d cassandra disable RUN update-rc.d cassandra disable
RUN update-rc.d postgresql disable
RUN sed -i.old '/ulimit/d' /etc/init.d/cassandra RUN sed -i.old '/ulimit/d' /etc/init.d/cassandra
RUN mkdir -p /var/log/postgres
RUN chown -R postgres:postgres /var/log/postgres
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/ 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/
RUN chmod a+x /tmp/*.sh \ RUN chmod a+x /tmp/*.sh \
@ -45,7 +51,15 @@ ENV DATA_FOLDER=/data
ENV HTTP_BIND_PORT=9090 ENV HTTP_BIND_PORT=9090
ENV DATABASE_TS_TYPE=cassandra ENV DATABASE_TS_TYPE=cassandra
ENV DATABASE_ENTITIES_TYPE=cassandra
ENV PGDATA=/data/db
ENV CASSANDRA_DATA=/data/cassandra
ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
ENV SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
ENV SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
ENV SPRING_DATASOURCE_USERNAME=postgres
ENV SPRING_DATASOURCE_PASSWORD=postgres
ENV CASSANDRA_HOST=localhost ENV CASSANDRA_HOST=localhost
ENV CASSANDRA_PORT=9042 ENV CASSANDRA_PORT=9042

18
msa/tb/docker-cassandra/start-db.sh

@ -15,7 +15,23 @@
# limitations under the License. # limitations under the License.
# #
cassandra_data_dir=${DATA_FOLDER}/db firstlaunch=${DATA_FOLDER}/.firstlaunch
export PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
if [ ! -d ${PGDATA} ]; then
mkdir -p ${PGDATA}
chown -R postgres:postgres ${PGDATA}
su postgres -c '${PG_CTL} initdb -U postgres'
fi
su postgres -c '${PG_CTL} -l /var/log/postgres/postgres.log -w start'
if [ ! -f ${firstlaunch} ]; then
su postgres -c 'psql -U postgres -d postgres -c "CREATE DATABASE thingsboard"'
fi
cassandra_data_dir=${CASSANDRA_DATA}
cassandra_data_link=/var/lib/cassandra cassandra_data_link=/var/lib/cassandra
if [ ! -L ${cassandra_data_link} ]; then if [ ! -L ${cassandra_data_link} ]; then

3
msa/tb/docker-cassandra/stop-db.sh

@ -15,4 +15,7 @@
# limitations under the License. # limitations under the License.
# #
export PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
service cassandra stop service cassandra stop
su postgres -c '${PG_CTL} stop'

7
msa/tb/docker-postgres/Dockerfile

@ -17,7 +17,11 @@
FROM thingsboard/openjdk8 FROM thingsboard/openjdk8
RUN apt-get update RUN apt-get update
RUN apt-get install -y postgresql postgresql-contrib RUN apt-get install -y curl
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' | tee --append /etc/apt/sources.list.d/pgdg.list > /dev/null
RUN curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN apt-get update
RUN apt-get install -y postgresql-11
RUN update-rc.d postgresql disable RUN update-rc.d postgresql disable
RUN mkdir -p /var/log/postgres RUN mkdir -p /var/log/postgres
@ -43,7 +47,6 @@ ENV DATA_FOLDER=/data
ENV HTTP_BIND_PORT=9090 ENV HTTP_BIND_PORT=9090
ENV DATABASE_TS_TYPE=sql ENV DATABASE_TS_TYPE=sql
ENV DATABASE_ENTITIES_TYPE=sql
ENV PGDATA=/data/db ENV PGDATA=/data/db

6
msa/tb/docker-postgres/start-db.sh

@ -17,13 +17,15 @@
firstlaunch=${DATA_FOLDER}/.firstlaunch firstlaunch=${DATA_FOLDER}/.firstlaunch
export PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
if [ ! -d ${PGDATA} ]; then if [ ! -d ${PGDATA} ]; then
mkdir -p ${PGDATA} mkdir -p ${PGDATA}
chown -R postgres:postgres ${PGDATA} chown -R postgres:postgres ${PGDATA}
su postgres -c '/usr/lib/postgresql/10/bin/pg_ctl initdb -U postgres' su postgres -c '${PG_CTL} initdb -U postgres'
fi fi
su postgres -c '/usr/lib/postgresql/10/bin/pg_ctl -l /var/log/postgres/postgres.log -w start' su postgres -c '${PG_CTL} -l /var/log/postgres/postgres.log -w start'
if [ ! -f ${firstlaunch} ]; then if [ ! -f ${firstlaunch} ]; then
su postgres -c 'psql -U postgres -d postgres -c "CREATE DATABASE thingsboard"' su postgres -c 'psql -U postgres -d postgres -c "CREATE DATABASE thingsboard"'

4
msa/tb/docker-postgres/stop-db.sh

@ -15,4 +15,6 @@
# limitations under the License. # limitations under the License.
# #
su postgres -c '/usr/lib/postgresql/10/bin/pg_ctl stop' export PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
su postgres -c '${PG_CTL} stop'

1
msa/tb/docker-tb/Dockerfile

@ -36,7 +36,6 @@ ENV DATA_FOLDER=/data
ENV HTTP_BIND_PORT=9090 ENV HTTP_BIND_PORT=9090
ENV DATABASE_TS_TYPE=sql ENV DATABASE_TS_TYPE=sql
ENV DATABASE_ENTITIES_TYPE=sql
ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.HSQLDialect ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.HSQLDialect
ENV SPRING_DRIVER_CLASS_NAME=org.hsqldb.jdbc.JDBCDriver ENV SPRING_DRIVER_CLASS_NAME=org.hsqldb.jdbc.JDBCDriver

Loading…
Cancel
Save