# # Copyright © 2016-2022 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. # version: '2.2' services: zookeeper: restart: always image: "zookeeper:3.5" ports: - "2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zookeeper:2888:3888;zookeeper:2181 tb-js-executor: restart: always image: "${DOCKER_REPO}/${JS_EXECUTOR_DOCKER_NAME}:${TB_VERSION}" scale: 10 env_file: - tb-js-executor.env tb-core1: restart: always image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" - "7070" logging: driver: "json-file" options: max-size: "200m" max-file: "30" environment: TB_SERVICE_ID: tb-core1 TB_SERVICE_TYPE: tb-core EDGES_ENABLED: "true" env_file: - tb-node.env volumes: - ./tb-node/conf:/config - ./tb-node/log:/var/log/thingsboard depends_on: - zookeeper - tb-js-executor - tb-rule-engine1 - tb-rule-engine2 tb-core2: restart: always image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" - "7070" logging: driver: "json-file" options: max-size: "200m" max-file: "30" environment: TB_SERVICE_ID: tb-core2 TB_SERVICE_TYPE: tb-core EDGES_ENABLED: "true" env_file: - tb-node.env volumes: - ./tb-node/conf:/config - ./tb-node/log:/var/log/thingsboard depends_on: - zookeeper - tb-js-executor - tb-rule-engine1 - tb-rule-engine2 tb-rule-engine1: restart: always image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" logging: driver: "json-file" options: max-size: "200m" max-file: "30" environment: TB_SERVICE_ID: tb-rule-engine1 TB_SERVICE_TYPE: tb-rule-engine env_file: - tb-node.env volumes: - ./tb-node/conf:/config - ./tb-node/log:/var/log/thingsboard depends_on: - zookeeper - tb-js-executor tb-rule-engine2: restart: always image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" logging: driver: "json-file" options: max-size: "200m" max-file: "30" environment: TB_SERVICE_ID: tb-rule-engine2 TB_SERVICE_TYPE: tb-rule-engine env_file: - tb-node.env volumes: - ./tb-node/conf:/config - ./tb-node/log:/var/log/thingsboard depends_on: - zookeeper - tb-js-executor tb-mqtt-transport1: restart: always image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" ports: - "1883" environment: TB_SERVICE_ID: tb-mqtt-transport1 env_file: - tb-mqtt-transport.env volumes: - ./tb-transports/mqtt/conf:/config - ./tb-transports/mqtt/log:/var/log/tb-mqtt-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-mqtt-transport2: restart: always image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" ports: - "1883" environment: TB_SERVICE_ID: tb-mqtt-transport2 env_file: - tb-mqtt-transport.env volumes: - ./tb-transports/mqtt/conf:/config - ./tb-transports/mqtt/log:/var/log/tb-mqtt-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-http-transport1: restart: always image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" ports: - "8081" environment: TB_SERVICE_ID: tb-http-transport1 env_file: - tb-http-transport.env volumes: - ./tb-transports/http/conf:/config - ./tb-transports/http/log:/var/log/tb-http-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-http-transport2: restart: always image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" ports: - "8081" environment: TB_SERVICE_ID: tb-http-transport2 env_file: - tb-http-transport.env volumes: - ./tb-transports/http/conf:/config - ./tb-transports/http/log:/var/log/tb-http-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-coap-transport: restart: always image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" ports: - "5683:5683/udp" environment: TB_SERVICE_ID: tb-coap-transport env_file: - tb-coap-transport.env volumes: - ./tb-transports/coap/conf:/config - ./tb-transports/coap/log:/var/log/tb-coap-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-lwm2m-transport: restart: always image: "${DOCKER_REPO}/${LWM2M_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" ports: - "5685:5685/udp" environment: TB_SERVICE_ID: tb-lwm2m-transport env_file: - tb-lwm2m-transport.env volumes: - ./tb-transports/lwm2m/conf:/config - ./tb-transports/lwm2m/log:/var/log/tb-lwm2m-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-snmp-transport: restart: always image: "${DOCKER_REPO}/${SNMP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}" environment: TB_SERVICE_ID: tb-snmp-transport env_file: - tb-snmp-transport.env volumes: - ./tb-transports/snmp/conf:/config - ./tb-transports/snmp/log:/var/log/tb-snmp-transport depends_on: - zookeeper - tb-core1 - tb-core2 tb-web-ui1: restart: always image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" env_file: - tb-web-ui.env tb-web-ui2: restart: always image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}" ports: - "8080" env_file: - tb-web-ui.env tb-vc-executor1: restart: always image: "${DOCKER_REPO}/${TB_VC_EXECUTOR_DOCKER_NAME}:${TB_VERSION}" ports: - "8081" environment: TB_SERVICE_ID: tb-vc-executor1 env_file: - tb-vc-executor.env volumes: - ./tb-vc-executor/conf:/config - ./tb-vc-executor/log:/var/log/tb-vc-executor depends_on: - zookeeper - tb-core1 - tb-core2 tb-vc-executor2: restart: always image: "${DOCKER_REPO}/${TB_VC_EXECUTOR_DOCKER_NAME}:${TB_VERSION}" ports: - "8081" environment: TB_SERVICE_ID: tb-vc-executor2 env_file: - tb-vc-executor.env volumes: - ./tb-vc-executor/conf:/config - ./tb-vc-executor/log:/var/log/tb-vc-executor depends_on: - zookeeper - tb-core1 - tb-core2 haproxy: restart: always container_name: "${LOAD_BALANCER_NAME}" image: thingsboard/haproxy-certbot:1.3.0 volumes: - ./haproxy/config:/config - ./haproxy/letsencrypt:/etc/letsencrypt - ./haproxy/certs.d:/usr/local/etc/haproxy/certs.d ports: - "80:80" - "443:443" - "1883:1883" - "7070:7070" - "9999:9999" cap_add: - NET_ADMIN environment: HTTP_PORT: 80 HTTPS_PORT: 443 MQTT_PORT: 1883 EDGES_RPC_PORT: 7070 FORCE_HTTPS_REDIRECT: "false" links: - tb-core1 - tb-core2 - tb-web-ui1 - tb-web-ui2 - tb-mqtt-transport1 - tb-mqtt-transport2 - tb-http-transport1 - tb-http-transport2