Docker 镜像
1.1.3
docker pull registry.cn-hangzhou.aliyuncs.com/an1-public/btlockmp:1.1.31.1.9
docker pull docker.cnb.cool/an1ai/public-docker-image/btlock-mp:1.1.9自建镜像
注意, v1.1.2 版本以上才能使用环境变量
目录结构
下载程序并按以下目录结构存放文件
./app/btlockmp
./app/config.toml
./Dockerfile
DockerFile
FROM alpine:3.20.1
LABEL authors="eddy@an1ai"
# 安装必要的运行时依赖(如 CA 证书)
RUN apk --no-cache add ca-certificates tzdata && update-ca-certificates
# 设置时区(可选)
ENV TZ=Asia/Shanghai
# 设置工作目录
WORKDIR /app
# 复制可执行文件
COPY ./app /app
RUN chmod +x /app/btlockmp
# 创建非 root 用户(增强安全性)
RUN addgroup -S an1group && \
adduser -S an1 -G an1group && \
chown -R an1:an1group /app
USER an1
# 暴露端口
EXPOSE 8080
EXPOSE 1883
# 启动应用
ENTRYPOINT ["./btlockmp"]创建镜像
docker build -t btlockmp:1.1.2 .运行容器
方法一、直接运行
需要修改redis信息和数据库信息
docker run --name btlockmp -d \
-e BLE_REDIS_ADDRESS=192.168.31.83:6379 \
-e BLE_DB_POSTGRES="host=192.168.31.83 user=an1 password=an1password dbname=an1 port=9102 connect_timeout=5 sslmode=disable TimeZone=Asia/Shanghai" \
-p 9080:8080 -p 9081:1883 --restart=always \
--log-opt max-size=10m --log-opt max-file=3 \
btlockmp:1.1.2方法二、使用 docker-compose.yml
version: '3.8'
services:
btlock-mp:
image: docker.cnb.cool/an1ai/public-docker-image/btlock-mp:0.0.15
container_name: btlock-mp
ports:
- "9080:8080"
- "9081:1883"
volumes:
- ./logs:/app/logs
- ./config:/app/config
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- BLE_REDIS_ADDRESS=192.168.31.83:6379
- BLE_DB_POSTGRES="host=192.168.31.83 user=an1 password=an1password dbname=an1 port=9102 connect_timeout=5 sslmode=disable TimeZone=Asia/Shanghai"
备注:可用的环境变量
其中 redis 信息 和 数据库信息 是必须设置的环境变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
BLE_REDIS_ADDRESS |
127.0.01:6379 | redis 地址 |
| BLE_REDIS_PASSWORD | redis 密码 | |
| BLE_REDIS_DB | 0 | redis 数据库 |
| BLE_REDIS_PREFIX | btlockmp | redis 键值的前缀 |
| BLE_DB_AUTO_MIGRATE | true | 是否自动合并数据库 |
BLE_DB_POSTGRES |
postgres数据库连接字符串,格式如下:host=192.168.10.83 user=an1 password=an1password dbname=an1 port=5432 connect_timeout=5 sslmode=disable TimeZone=Asia/Shanghai |
|
BLE_DB_MYSQL |
mysql数据库连接字符串,格式如下: username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local |
|
| BLE_DB_SQLITE | btlockmp.sqlite | Sqlite数据库路径 |
| BLE_MQTT_INLINE_ADDRESS | :1883 | mqtt服务端口 |
| BLE_SETTING_HTTP_ADDRESS | :8080 | API HTTP 端口 |
| BLE_SETTING_CLUSTER | BtLockMPCluster | 集群名称 |
| BLE_SETTING_WINDOW_SECONDS | 1 | 统计时间段(秒) |
| BLE_SETTING_MAX_REQUESTS | 2 | 统计时间段内的API最大调用数量 |
| BLE_SETTING_STORE_LOG | true | 存储日志在数据库 |
| BLE_SETTING_STORE_DAYS | 90 | 日志存储天数 |
| BLE_SETTING_BATTERY_ALERT | true | 启用电量告警提示 |
| BLE_SETTING_BATTERY_LOW | 20 | 低电量告警数值 |
| BLE_JOB_GATEWAY_DATA | */1 * * * * | 同步数据库计划 |
| BLE_JOB_GATEWAY_OFFLINE_CMD | */3 * * * * | 发送离线指令计划 |
| BLE_JOB_GATEWAY_STATUS | */5 * * * * | 同步子锁状态计划 |
| BLE_JOB_BATTERY_ALERT | 0 * * * * | 推送低电量计划 |
| BLE_JOB_DB_HISTORY_CLEAR | 0 * * * * | 清除历史数据计划 |
| BLE_JOB_DB_CACHE | */5 * * * * * | 写入缓存到数据库计划 |
| BLE_JWT_SECRET_KEY | eddy.at.an1ai.com | JWT SECRET KEY |
| BLE_JWT_ISSUER | an1 | |
| BLE_JWT_SUBJECT | admin | |
| BLE_JWT_EXPIRED | 360 | 过期时间(分钟) |
| BLE_LOG_ERROR_LOG | ./logs/err.log | 异常日志保存路径 |
| BLE_LOG_OTHER_LOG | ./logs/other.log | 日常日志保存路径 |
| BLE_LOG_LEVEL | info | 日志级别,有 debug,info,warn,error |
| BLE_LOG_MAX_BACKUPS | 0 | 日志保留多少个备份 (数量超过天数会删除) |
| BLE_LOG_MAX_AGE | 30 | 日志保留多少天(数量超过备份数会删除) |
| BLE_LOG_MAC_SIZE | 10 | 每个文件最大容量(M) |
| BLE_OTEL_ENABLED | false | 是否启用OTEL |
| BLE_OTEL_SERVICE_NAME | BtLockMP | |
| BLE_OTEL_USE_GRPC | false | |
| BLE_OTEL_ENDPOINT | 127.0.0.1:5080 | |
| BLE_OTEL_INSECURE | true | |
| BLE_OTEL_TRACE_URL | /api/default/v1/traces | |
| BLE_OTEL_METRIC_URL | /api/default/v1/metrics | |
| BLE_OTEL_HEADERS_AUTHORIZATION | ||
| BLE_OTEL_HEADERS_ORGANIZATION | ||
| BLE_OTEL_HEADERS_STREAM_NAME | ||
| BLE_OPENOBSERVE_ENABLED | false | 是否启用openobserve |
| BLE_OPENOBSERVE_ENDPOINT | ||
| BLE_OPENOBSERVE_MAX_RECORDS | 1000 | |
| BLE_OPENOBSERVE_HEADERS_AUTHORIZATION |
作者:阮德明 创建时间:2025-06-25 16:20
最后编辑:阮德明 更新时间:2026-06-04 15:08
最后编辑:阮德明 更新时间:2026-06-04 15:08