Docker - 1000 to 5000 Devices

Introduction

For a device count in the range of 1000 to 5000, it is recommended to operate the application and database servers separately.
The basic setup of the servers and the installation of the necessary software packages are described in detail in the General Docker Installation Guide →.
This guide describes the necessary configuration files with explanatory comments to make customization easier for you and supplements the general Docker installation guide.

Hardware Requirements and Setup

1x Application Server

  • 2 CPU Cores
  • 4 GB RAM
  • Approximately 30 GB SSD Storage

1x Database Server

  • 4 CPU Cores
  • 8 GB RAM
  • Approximately 100 GB SSD Storage

App Server

docker-compose.yml

services:
  relution:
    image: relution/relution:latest
    restart: always
    container_name: docker_relution
    networks:
      relution-network:
        aliases:
          - relution-docker
    environment:
      - TZ=Europe/Berlin
    expose:
      - '8080'
      - '8099'
    ports:    # Externally exposed application port for testing // deactivate once the server is reachable under the URL
      - '8080:8080'    # Externally exposed application port for testing // deactivate once the server is reachable under the URL
    volumes:
      - './application.yml:/opt/relution/application.yml'

networks:
  relution-network:

application.yml

relution:
  system:
    admin:
      password: $Placeholder    # Set initial password here and change it in the portal after the first login!
      email: $Placeholder    # Alternative to username "Admin" and for resetting the password
  server:
    externalURL: https://$Placeholder    # Replace with the URL under which the server will be reachable. Always starts with https://
  database:
    type: mariadb
    url: jdbc:mariadb://$Placeholder:3306/relution?useServerPrepStmts=true    # IP, FQDN, or URL of the database server with port specification. The port will be further configured on the DB side in the guide.
    username: relution    # Database username
    password: $Placeholder    # Password of the relution database = MYSQL_PASSWORD

The password from the application.yml will be needed again later for the database configuration in the docker-compose.yml

DB Server

docker-compose.yml

services:
  mariadb:
    image: mariadb:lts
    restart: always
    container_name: docker_mariadb
    networks:
      relution-network:
        aliases:
          - mariadb-docker
    environment:
      - TZ=Europe/Berlin
      - MYSQL_DATABASE=relution
      - MYSQL_ROOT_PASSWORD=$Placeholder    # Root password for the database
      - MYSQL_USER=relution
      - MYSQL_PASSWORD=$Placeholder    # Password of the relution database = MYSQL_PASSWORD
    expose:
      - '3306'
    ports:    # externally exposed database port that the application server must be able to reach
      - '3306:3306'    # externally exposed database port that the application server must be able to reach
    volumes:
      - 'mariadb:/var/lib/mysql'
      - '/opt/relution/relution.cnf:/etc/mysql/conf.d/relution.cnf'

volumes:
  mariadb:

networks:
  relution-network:

relution.cnf

[mysqld]
collation-server=utf8mb4_general_ci
character-set-server=utf8mb4
max_allowed_packet=1G
innodb_file_per_table=1