Docker 镜像

1.1.3

docker pull registry.cn-hangzhou.aliyuncs.com/an1-public/btlockmp:1.1.3

1.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