rsiot 0.0.83

Метакрейт, импортирующий все другие крейты через флаги feature
# docker compose up -d
#
# Запустить один сервис:
# docker compose up -d emqx

name: rsiot-dev

services:
  emqx:
    container_name: rsiot-emqx
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    hostname: emqx
    image: emqx:5.6.0 # https://hub.docker.com/_/emqx
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083
    volumes:
      - emqx_volume:/opt/emqx/data

  timescaledb:
    container_name: rsiot-timescaledb
    hostname: timescaledb
    image: timescale/timescaledb:2.12.2-pg15
    command: postgres
      -c config_file=/etc/postgresql/postgresql.conf
      -c hba_file=/etc/postgresql/pg_hba.conf
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    ports:
      - "5432:5432"
    volumes:
      - ./rsiot-config-files/timescaledb/postgresql.conf:/etc/postgresql/postgresql.conf
      - ./rsiot-config-files/timescaledb/pg_hba.conf:/etc/postgresql/pg_hba.conf
      - ./rsiot-config-files/timescaledb/init.sql:/docker-entrypoint-initdb.d/init.sql

  # для тестирования http-client
  httpbin:
    container_name: rsiot-httpbin
    hostname: httpbin
    image: kennethreitz/httpbin
    ports:
      - "80:80"

  # для тестирования websocket
  websocket-server:
    container_name: rsiot-websocket-server
    hostname: websocket-server
    image: crossbario/autobahn-testsuite
    ports:
      - "9001:9001"
    command: wstest -m broadcastserver -w ws://localhost:9001

  # для тестирования modbus-client
  modbus-server:
    container_name: rsiot-modbus-server
    hostname: modbus-server
    image: oitc/modbus-server
    ports:
      - "5020:5020"
    volumes:
      - ./modbus_server.json:/app/modbus_server.json

  # redis
  redis:
    container_name: rsiot-redis
    hostname: redis
    image: redis/redis-stack:latest
    ports:
      - "6379:6379" # порт Redis
      - "8002:8001" # порт UI
    volumes:
      - redis_data:/data
      - ./rsiot-config-files/redis/redis.conf:/redis-stack.conf

  # surrealdb
  surrealdb:
    command: start --user root --pass root file:/data/database.db
    container_name: rsiot-surrealdb
    healthcheck:
      test: surreal isready --conn http://localhost:8000
      interval: 5s
      timeout: 5s
      retries: 5
    hostname: surrealdb
    image: surrealdb/surrealdb:latest
    ports:
      - "8003:8000"
    user: root
    volumes:
      - surrealdb_data:/data/

  influxdb:
    container_name: rsiot-influxdb
    hostname: influxdb
    image: influxdb:2.7.5
    ports:
      - "8086:8086"
    volumes:
      - influxdb_data:/var/lib/influxdb2

volumes:
  emqx_volume:
    name: emqx_volume
  influxdb_data:
    name: influxdb_data
  redis_data:
    name: redis_data
  surrealdb_data:
    name: surrealdb_data