
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该镜像用于运行DSMR-Reader(https://github.com/dennissiemensma/dsmr-reader%EF%BC%89%E5%AE%9E%E4%BE%8B%E3%80%82%E5%88%9D%E5%A7%8B%E5%9F%BA%E4%BA%8Exirixiz%E9%95%9C%E5%83%8F fork 开发,解决了原镜像更新不及时及树莓派多架构支持不足的问题,同时支持通过同一镜像运行远程数据记录器。当Dennis发布新版本时,镜像会自动构建。
amd64 - 适用于常规Intel/AMD系统(默认)arm32v6 - 适用于Raspberry Pi 1/2/Zeroarm32v7 - 适用于Raspberry Pi 2/Zero 2arm64v8 - 适用于Raspberry Pi 3及更高版本树莓派版本基于Alpine构建,但Alpine 3.13中对容器日期进行了从32位到64位的破坏性变更。为确保树莓派镜像正常运行,需将"libseccomp2"升级至2.4.2或更高版本。由于稳定版Raspbian仓库中默认不提供该版本,需从backports安装,执行以下命令:
$ sudo su - # apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138 # echo 'deb http://httpredir.debian.org/debian buster-backports main contrib non-free' | tee -a /etc/apt/sources.list.d/debian-backports.list # apt update # apt install libseccomp2 -t buster-backports
80 : WebGUI注意:如需HTTPS,请使用Traefik或其他代理实现,这样可避免修改DSMR-Reader标准配置,便于后续升级。
/home/dsmr/app/backups
/dev/ttyUSB0 - P1接口连接的串行设备示例
DSMR_MODE - 设置DSMR运行模式(默认值为SERVER):
SERVER - 运行所有进程,包括后端、GUI和数据记录器SERVER-NO-DATALOGGER - 运行服务器模式但不包含数据记录器进程,需配合远程数据记录器收集DSMR报文DATALOGGER - 仅启动数据记录器客户端,将P1报文发送至服务器,需配置DATALOGGER_*环境变量所有环境变量详见:[***]
DSMRREADER_DATALOGGER_API_HOSTS - 目标DSMR Reader主机,逗号分隔,使用数据记录器时必填DSMRREADER_DATALOGGER_API_KEYS - DSMR Reader API密钥,逗号分隔,使用数据记录器时必填DSMRREADER_DATALOGGER_INPUT_METHOD - 连接方式:serial或ipv4(默认值为serial)DSMRREADER_DATALOGGER_SERIAL_PORT - 串行端口名称(默认值为/dev/ttyUSB0),仅在输入方式为serial时使用DSMRREADER_DATALOGGER_SERIAL_BAUDRATE - 串行端口速率(默认值为115200),仅在输入方式为serial时使用DSMRREADER_DATALOGGER_NETWORK_HOST - 网络主机(默认值为localhost),仅在输入方式为ipv4时使用DSMRREADER_DATALOGGER_NETWORK_PORT - 网络端口(默认值为2000),仅在输入方式为ipv4时使用数据记录器更多信息:[***]
以下命令启动镜像(不含PostgreSQL服务器),示例中假设PostgreSQL运行在"192.168.1.1":
docker run -d \ --name dsmr \ --restart unless-stopped \ -p 8888:80 \ -e DJANGO_DATABASE_HOST=192.168.1.1 \ -e DSMRREADER_ADMIN_USER=admin \ -e DSMRREADER_ADMIN_PASSWORD=admin \ -v /dev:/dev \ --device /dev/ttyUSB0:/dev/ttyUSB0 \ ualex73/dsmr-reader-docker
yamlversion: '3' services: db-dsmr: image: postgres container_name: db-dsmr volumes: - <dir>/db:/var/lib/postgresql/data restart: unless-stopped environment: - POSTGRES_USER=dsmrreader - POSTGRES_PASSWORD=dsmrreader - POSTGRES_DB=dsmrreader networks: - net-dsmr dsmr: container_name: dsmr image: ualex73/dsmr-reader-docker restart: unless-stopped volumes: - ./dsmr/backups:/home/dsmr/app/backups - /dev:/dev environment: - DJANGO_DATABASE_HOST=db-dsmr - DSMRREADER_ADMIN_USER=admin - DSMRREADER_ADMIN_PASSWORD=password ports: - 8888:80 devices: - /dev/ttyUSB0:/dev/ttyUSB0 networks: - net-dsmr networks: net-dsmr: driver: bridge
使用docker-compose启动容器:
docker-compose -f docker-compose.yaml up -d db-dsmr docker-compose -f docker-compose.yaml up -d dsmr
docker-compose中的"db-dsmr"使用Docker卷存储数据,因此即使应用和容器被移除,PostgreSQL数据仍会保留。
docker-compose stop dsmr
docker exec -t db-dsmr pg_dumpall -c -U dsmrreader >postgresql-dump.sql
docker-compose start dsmr
docker-compose stop dsmr
docker exec -t db-dsmr dropdb dsmrreader -U dsmrreader
docker exec -t db-dsmr createdb -O dsmrreader dsmrreader -U dsmrreader
cat postgresql-dump.sql | docker exec -i db-dsmr psql -U dsmrreader
docker-compose start dsmr
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务