Arm 搭建一套传感器采集系统(基于docker)
架构:
数据库: questdb
前端:blazor server
后端:c#控制台(hostserver)
平台运维:portainer
容器管理
# 国外
docker run -d -p 9000:9000 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:alpine-sts
# 国内(Arm64)
docker run -d -p 9000:9000 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
registry.cn-beijing.aliyuncs.com/muta/portainer-ce:alpine-sts-arm64
# 国内(Amd64)
docker run -d -p 9000:9000 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
registry.cn-beijing.aliyuncs.com/muta/portainer-ce:alpine-sts-amd64数据库安装
# 国外
docker run -d \
--name questdb \
-p 8812:8812 \
-p 9080:9000 \
-p 9009:9009 \
-v questdb_data:/root/.questdb/db \
questdb/questdb:nightly-rhel
# 国内(Arm64)
docker run -d \
--name questdb \
-p 8812:8812 \
-p 9080:9000 \
-p 9009:9009 \
-v questdb_data:/root/.questdb/db \
registry.cn-beijing.aliyuncs.com/muta/questdb:nightly-rhel-arm64
# 国内(Amd64)
docker run -d \
--name questdb \
-p 8812:8812 \
-p 9080:9000 \
-p 9009:9009 \
-v questdb_data:/root/.questdb/db \
registry.cn-beijing.aliyuncs.com/muta/questdb:nightly-rhel-amd64
rabbitmq
version: '3.8'
services:
mq:
image: registry.cn-beijing.aliyuncs.com/muta/rabbitmq:management-arm64
restart: always
volumes:
- rabbitmq_data:/var/lib/rabbitmq # 持久化RabbitMQ数据
ports:
- "5672:5672" # AMQP协议端口,应用程序连接用
- "15672:15672" # 管理后台端口,Web管理界面用
# 以下端口仅在集群或特殊情况下需要,可选
# - "25672:25672" # 节点间通信端口(集群用)
# - "4369:4369" # Erlang节点发现端口(集群用)
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"
volumes:
rabbitmq_data: # 定义持久化数据卷
采集程序(方案1)
version: '3.8'
services:
armcollection2025masablazorapp:
image: registry.cn-beijing.aliyuncs.com/dfzh/armcollection2025masablazorapp:latest
ports:
- "20000:8080"
user: root
devices:
- /dev/ttyS3:/dev/ttyS3
environment:
SqlSugar__1__ConnectionString: "host=host.docker.internal;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;"
restart: always
volumes:
- /home/orangepi/DataProtection-Keys/:/app/.aspnet/DataProtection-Keys
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"采集程序(方案2)
version: '3.8'
services:
app:
image: registry.cn-beijing.aliyuncs.com/dfzh/armcollectblazorapp:latest
network_mode: "host"
environment:
Urls: "http://*:20000"
restart: always
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"
serialport2questdb:
image: registry.cn-beijing.aliyuncs.com/dfzh/armcollectserialport2questdb:latest
network_mode: "host"
user: root
devices:
- /dev/ttyS3:/dev/ttyS3
environment:
ComPortName : "/dev/ttyS3"
Urls: "http://*:20002"
restart: always
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"version: '3.8'
services:
app:
image: registry.cn-beijing.aliyuncs.com/dfzh/staticforcecalibration-blazorserver:arm64
restart: always
volumes:
- /home/bjgrst/staticforcecalibration_data:/app/App_Data
- /home/bjgrst/DefaultSeedsJsonFiles/:/app/DefaultSeedsJsonFiles
- /dev:/dev
ports:
- "8080:8080"
user: root
privileged: true
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"