Sign inSign up

sllwakeup/iot_management_system

By sllwakeup

Updated 5 months ago

iot 后台管理系统 (测试)

Image
Internet of things
0

5.8K

sllwakeup/iot_management_system repository overview

注释:使用需要源码

docker-compose.yml

services:
 # ======================== Laravel 核心服务 ========================
 app:
   # build:
   #   context: .
   #   dockerfile: Dockerfile
   image: sllwakeup/iot_management_system:latest
   container_name: iot-app
   restart: unless-stopped
   tty: true
   expose:
     - "9000"
   environment:
     # 数据库
     DB_CONNECTION: mysql
     DB_HOST: mysql
     DB_PORT: 3306
     DB_DATABASE: laravel_iot
     DB_USERNAME: root
     DB_PASSWORD: root
     # Redis
     CACHE_DRIVER: redis
     QUEUE_CONNECTION: redis
     SESSION_DRIVER: redis
     CACHE_PREFIX: iot_prefix_
     REDIS_HOST: redis
     REDIS_PASSWORD: iot_redis_admin
     REDIS_PORT: 6379
     # 日志
     LOG_CHANNEL: stderr
     LOG_LEVEL: info
     # 时区
     TZ: Asia/Shanghai
     # InfluxDB
     INFLUXDB_API_TOKEN: O9pFqwNOjTZZe9QFIqHpgu9WNuyw3ofx9-WkOnc3fvGEQ9A7Qi1dVymzIPkBzWCzjxS62qgLSavIt9SLNtIeKQ==
     INFLUXDB_URL: http://influxdb:8086
     INFLUXDB_ORG: iot
     INFLUXDB_BUCKET: iot
     # Nightwatch 监控
     # NIGHTWATCH_TOKEN: Rga5lNbeJWbt0ZjCXLHMmRxWrybDCfPxqgq6yW4Kdom7
     # NIGHTWATCH_INGEST_URI: nightwatch-agent:2407
   working_dir: /var/www
   volumes:
     # - ./:/var/www
     - ./.env:/var/www/.env
     - ./docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf
     - ./docker/logs/php:/var/log/php
   networks:
     - iot-main-network
   depends_on:
     - mysql
     - redis
   deploy:
     resources:
       limits:
         cpus: '1'
         memory: 1G

 portainer:
   image: portainer/portainer-ce:2.33.2
   container_name: iot-portainer
   restart: unless-stopped
   ports:
     - "9400:9000"        # Web 管理界面端口
     # - "9443:9443"        # HTTPS 管理界面端口
   volumes:
     - ./docker/portainer:/data       # Portainer 数据持久化
     - /var/run/docker.sock:/var/run/docker.sock  # 直接管理 Docker 引擎
   environment:
     - ADMIN_USERNAME=admin
     - ADMIN_PASSWORD=admin123456789
   tty: true
   networks:
     - iot-main-network
   deploy:
     resources:
       limits:
         cpus: '0.5'
         memory: 256M

 # nightwatch-agent:
 #   image: laravelphp/nightwatch-agent:latest
 #   container_name: iot-nightwatch-agent
 #   tty: true
 #   expose:
 #     - "2407"
 #   environment:
 #     - NIGHTWATCH_TOKEN=Rga5lNbeJWbt0ZjCXLHMmRxWrybDCfPxqgq6yW4Kdom7
 #   volumes:
 #     - ./.env:/var/www/.env
 #   healthcheck:
 #     test: php nightwatch-status
 #     interval: 30s
 #     timeout: 5s
 #     retries: 3
 #     start_period: 5s
 #   restart: unless-stopped
 #   deploy:
 #     resources:
 #       limits:
 #         cpus: '0.3'
 #         memory: 128M
 #   networks:
 #     - iot-main-network

 task-clear:
   image: sllwakeup/iot_management_system:latest
   container_name: iot-task-clear
   working_dir: /var/www
   volumes:
     - ./.env:/var/www/.env
   depends_on:
     - app
     - mysql
   environment:
     DB_HOST: mysql
     DB_PORT: 3306
     DB_DATABASE: laravel_iot
     DB_USERNAME: root
     DB_PASSWORD: root
     TZ: Asia/Shanghai
   command: >
     sh -c "
       php artisan task:clear &&
       echo '任务清除服务已启动'
     "
   tty: true
   networks:
     - iot-main-network
   restart: unless-stopped
   deploy:
     resources:
       limits:
         cpus: '0.3'
         memory: 128M

 queue:
   image: sllwakeup/iot_management_system:latest
   container_name: iot-queue
   working_dir: /var/www
   volumes:
     - ./.env:/var/www/.env
     - ./storage/uploads:/var/www/storage/uploads
     - ./docker/logs/php:/var/log/php
     - ./docker/logs/queue:/var/www/storage/logs/queue
   depends_on:
     - app
     - mysql
     - redis
   environment:
     DB_HOST: mysql
     DB_PORT: 3306
     DB_DATABASE: laravel_iot
     DB_USERNAME: root
     DB_PASSWORD: root
     REDIS_HOST: redis
     REDIS_PORT: 6379
     REDIS_PASSWORD: iot_redis_admin
     QUEUE_CONNECTION: redis
     CACHE_PREFIX: iot_prefix_
     TZ: Asia/Shanghai
   command: php artisan queue:work --queue=default,sms,email --sleep=1 --tries=3 --timeout=90
   tty: true
   networks:
     - iot-main-network
   restart: unless-stopped
   deploy:
     resources:
       limits:
         cpus: '0.5'
         memory: 512M

 redis:
   image: redis:6-alpine
   container_name: iot-redis
   restart: unless-stopped
   ports:
     - "16379:6379"
   command: redis-server --requirepass iot_redis_admin --appendonly yes
   volumes:
     - ./docker/redis/data:/data
     - ./docker/logs/redis:/var/log/redis
   tty: true
   networks:
     - iot-main-network
   healthcheck:
     test: ["CMD", "redis-cli", "-a", "iot_redis_admin", "ping"]
     interval: 10s
     timeout: 5s
     retries: 3
   deploy:
     resources:
       limits:
         cpus: '0.5'
         memory: 512M

 mysql:
   image: mysql:8.0
   container_name: iot-mysql
   restart: unless-stopped
   environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: laravel_iot
     MYSQL_CHARACTER_SET_SERVER: utf8mb4
     MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
   ports:
     - "33066:3306"
   volumes:
     - ./docker/mysql/data:/var/lib/mysql
     - ./docker/logs/mysql:/var/log/mysql
   tty: true
   networks:
     - iot-main-network
   deploy:
     resources:
       limits:
         cpus: '1'
         memory: 1G

 nginx:
   image: nginx:alpine
   container_name: iot-nginx
   restart: unless-stopped
   ports:
     - "8000:80"
   depends_on:
     - app
   volumes:
     - ./docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
     - ./web/dist:/usr/share/nginx/html
     - ./docker/logs/nginx:/var/log/ngin
     - ./storage/uploads:/var/www/storage/uploads
   tty: true
   networks:
     - iot-main-network
   deploy:
     resources:
       limits:
         cpus: '0.3'
         memory: 128M

 influxdb:
   image: influxdb:2.7
   container_name: iot-influxdb
   restart: unless-stopped
   ports:
     - "8006:8086"
   volumes:
     - ./docker/influxdb/data:/var/lib/influxdb2
     - ./docker/influxdb/config:/etc/influxdb2
     - ./docker/logs/influxdb:/var/log/influxdb2
   environment:
     DOCKER_INFLUXDB_INIT_MODE: setup
     DOCKER_INFLUXDB_INIT_USERNAME: admin
     DOCKER_INFLUXDB_INIT_PASSWORD: admin123
     DOCKER_INFLUXDB_INIT_ORG: iot
     DOCKER_INFLUXDB_INIT_BUCKET: iot
     DOCKER_INFLUXDB_INIT_RETENTION: 168h
     TZ: Asia/Shanghai
   networks:
     - iot-main-network
   healthcheck:
     test: ["CMD", "curl", "-f", "http://localhost:8086/health"]
     interval: 20s
     timeout: 10s
     retries: 3
   deploy:
     resources:
       limits:
         cpus: '0.5'
         memory: 512M

 emqx:
   image: emqx:5.6.1
   container_name: iot-emqx
   restart: unless-stopped
   environment:
     - EMQX_DASHBOARD__DEFAULT_USERNAME=admin
     - EMQX_DASHBOARD__DEFAULT_PASSWORD=admin123
     - TZ=Asia/Shanghai
   healthcheck:
     test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
     interval: 30s
     timeout: 15s
     retries: 5
     start_period: 180s
   volumes:
     - ./docker/emqx/data:/opt/emqx/data
     - ./docker/emqx/log:/opt/emqx/log
   networks:
     - iot-main-network
   ports:
     - "18830:1883"
     - "18080:18083"
   deploy:
     resources:
       limits:
         cpus: '1.5'
         memory: 1G

 mqtt-client-services:
   image: sllwakeup/iot_management_system:latest
   container_name: iot-mqtt-services
   working_dir: /var/www
   volumes:
     # - ./:/var/www
     - ./.env:/var/www/.env
     - ./docker/logs/mqtt-services:/var/log/mqtt
   tty: true
   networks: 
     - iot-main-network 
   depends_on: 
     - app
     - emqx
     - redis
     - mysql
     - queue
     - influxdb
   restart: unless-stopped
   environment: 
     TZ: Asia/Shanghai
     DB_CONNECTION: mysql
     DB_HOST: mysql
     DB_PORT: 3306
     DB_DATABASE: laravel_iot
     DB_USERNAME: root
     DB_PASSWORD: root
     REDIS_HOST: redis
     REDIS_PORT: 6379
     REDIS_PASSWORD: iot_redis_admin
     CACHE_PREFIX: iot_prefix_
     MQTT_HOST: emqx
     MQTT_PORT: 1883
     MQTT_USERNAME: admin
     MQTT_PASSWORD: admin123
     INFLUXDB_API_TOKEN: O9pFqwNOjTZZe9QFIqHpgu9WNuyw3ofx9-WkOnc3fvGEQ9A7Qi1dVymzIPkBzWCzjxS62qgLSavIt9SLNtIeKQ==
     INFLUXDB_URL: http://influxdb:8086
     INFLUXDB_ORG: iot
     INFLUXDB_BUCKET: iot
   command: >
     sh -c "
       php artisan mqtt:client &&
       echo 'MQTT 服务已启动'
     "
   healthcheck:
     test: ["CMD-SHELL", "pgrep -f 'php artisan mqtt:client' > /dev/null || exit 1"]
     interval: 30s
     timeout: 10s
     retries: 3
     start_period: 40s
   deploy:
     resources:
       limits:
         cpus: '1.0'
         memory: 1G

 tcp-demo-services:
   image: sllwakeup/iot_management_system:latest
   container_name: iot-tcp-demo-services
   working_dir: /var/www
   volumes: 
     # - ./:/var/www
     - ./.env:/var/www/.env
   tty: true
   networks: 
     - iot-main-network 
   ports:
     - "8180:8180"
   depends_on: 
     - app
     - redis
     - mysql
     - queue
     - influxdb
   restart: unless-stopped
   environment: 
     TZ: Asia/Shanghai
     DB_CONNECTION: mysql
     DB_HOST: mysql
     DB_PORT: 3306
     DB_DATABASE: laravel_iot
     DB_USERNAME: root
     DB_PASSWORD: root
     REDIS_HOST: redis
     REDIS_PORT: 6379
     REDIS_PASSWORD: iot_redis_admin
     CACHE_PREFIX: iot_prefix_
     INFLUXDB_API_TOKEN: O9pFqwNOjTZZe9QFIqHpgu9WNuyw3ofx9-WkOnc3fvGEQ9A7Qi1dVymzIPkBzWCzjxS62qgLSavIt9SLNtIeKQ==
     INFLUXDB_URL: http://influxdb:8086
     INFLUXDB_ORG: iot
     INFLUXDB_BUCKET: iot
   command: >
     sh -c "
       php artisan tcp:start
     "
   healthcheck:
     test: ["CMD-SHELL", "pgrep -f 'php artisan tcp:start' > /dev/null || exit 1"]
     interval: 30s
     timeout: 10s
     retries: 3
     start_period: 40s
   deploy:
     resources:
       limits:
         cpus: '0.5'
         memory: 512M

# ======================== 网络配置 ========================
networks:
 iot-main-network:
   driver: bridge

Tag summary

Content type

Image

Digest

sha256:09cb77463

Size

3.8 GB

Last updated

5 months ago

docker pull sllwakeup/iot_management_system