iot 后台管理系统 (测试)
5.8K
注释:使用需要源码
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
Content type
Image
Digest
sha256:09cb77463…
Size
3.8 GB
Last updated
5 months ago
docker pull sllwakeup/iot_management_system