
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!https://img.shields.io/github/workflow/status/kklldog/agileconfig/.NET%20Core !https://img.shields.io/github/stars/kklldog/AgileConfig !https://img.shields.io/github/last-commit/kklldog/AgileConfig/master.svg?logo=github&logoColor=green&label=commit !https://img.shields.io/nuget/v/agileconfig.client?label=agileconfig.client !https://img.shields.io/nuget/dt/agileconfig.client?label=client%20download !https://img.shields.io/github/license/kklldog/AgileConfig
这是一个基于.NET Core开发的轻量级配置中心。配置中心常与微服务关联,但实际上,许多分布式程序(如传统SOA应用)或容器化部署的非微服务应用,因部署分散而面临配置修改困难的问题。AgileConfig的开发目标并非局限于微服务,而是为各类分布式、容器化应用提供简单的配置读取与修改能力。
AgileConfig秉承轻量化理念,部署简单、配置简单、使用简单、学习简单,仅保留必要功能,无需如Apollo般复杂庞大,却足以替换web.config、appsettings.json等传统配置文件。若不想为配置中心部署复杂架构,AgileConfig是理想选择。
演示地址:AgileConfig Server Demo 密码:***
客户端项目:https://github.com/kklldog/AgileConfig_Client
示例项目:
https://github.com/kklldog/AgileConfig_Client/tree/master/AgileConfigMVCSample
https://github.com/kklldog/AgileConfig_Client/tree/master/AgileConfigWPFSample
https://github.com/kklldog/AgileConfig_Client/tree/master/AgileConfigConsoleSample
教程 - 如何使用AgileConfig.Client读取配置
https://github.com/kklldog/AgileConfig/wiki/Restful-API
。初始化时可配置多个节点地址,客户端会随机选择节点建立长连接;连接中断后自动重连其他节点,确保配置获取连续性。
节点基于ASP.NET Core开发,为简化部署,管理程序与节点服务合二为一。通过环境变量可启用任意节点的管理程序功能,实现配置维护。
使用数据库存储配置数据,支持SqlServer、MySQL、Sqlite、PostgreSQL、Oracle五种数据库(基于Freesql数据访问组件)。用户仅需创建空库,表结构将在首次启动时自动生成。
注意:版本≤1.0.4的用户请勿更新,EFCore与Freesql自动建库存在差异,避免兼容性问题。
AgileConfig节点无状态,支持横向扩展部署。客户端配置多节点地址后,可自动切换连接节点,保障高可用:
| 问题 | 影响 | 说明 |
|---|---|---|
| 控制台下线 | 无法维护配置,客户端无影响 | 控制台与节点共存,控制台下线通常意味着对应节点下线 |
| 某个节点下线 | 客户端重连至其他节点 | 无任何影响 |
| 所有节点下线 | 客户端从内存/本地缓存读取配置 | 已启动客户端从内存读取;未启动客户端尝试连接失败后,从本地文件缓存读取,确保应用可启动 |
数据库高可用需依赖数据库自身方案(如MySQL的binlog),与Apollo架构类似,数据库单点问题由数据库层面解决。
用户需手动创建空库,首次启动时自动生成所有表结构。支持数据库及provider对照:
SqlServerMySqlSqlitePostgreSqlOracle使用Docker部署示例:
bashsudo docker run --name agile_config -e adminConsole=true -e db:provider=sqlite -e db:conn="Data Source=agile_config.db" -p 5000:5000 -v /etc/localtime:/etc/localtime kklldog/agile_config:latest
环境变量说明:
adminConsole: 是否启用管理程序功能(true/false)db:provider: 数据库类型(如sqlite)db:conn: 数据库连接串首次运行需设置管理员密码,访问部署地址(如http://localhost:5000),按提示完成初始化。
多节点部署时,需在管理界面添加所有节点信息(含启用管理程序的节点),实现统一管理。
支持多应用隔离,应用间可配置继承关系(提取公共配置至父应用,子应用继承并覆盖)。应用内配置支持分组管理,提升配置组织灵活性。
配置项支持分组,新增配置需手动“上线”以推送至客户端;修改、删除、回滚操作实时推送。配置版本记录完整,支持任意版本回滚。
管理界面可查看已连接客户端状态,包括应用ID、连接时间等信息。
记录服务运行关键事件(如配置变更、节点状态等),便于问题排查。
通过NuGet安装客户端类库:
bashInstall-Package AgileConfig.Client
以ASP.NET Core MVC项目为例,在appsettings.json添加配置:
json{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "AgileConfig": { "appId": "app", // 应用ID "secret": "xxx", // 应用密钥 "nodes": "http://localhost:5000,http://localhost:5001" // 多个节点用逗号分隔 } }
在Program.cs中配置客户端:
csharppublic static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((context, config) => { var configClient = new ConfigClient(); // 从appsettings.json读取配置 config.AddAgileConfig(configClient); // 添加AgileConfig配置源 ConfigClient = configClient; // 挂载客户端实例供全局使用 configClient.ConfigChanged += ConfigClient_ConfigChanged; // 注册配置变更事件 }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
支持IConfiguration、IOptions模式及客户端实例直接读取,示例:
csharppublic class HomeController : Controller { private readonly IConfiguration _configuration; private readonly IOptions<DbConfigOptions> _dbOptions; public HomeController(IConfiguration configuration, IOptions<DbConfigOptions> dbOptions) { _configuration = configuration; _dbOptions = dbOptions; } // 使用IConfiguration读取 public IActionResult ByIConfiguration() { var userId = _configuration["userId"]; var dbConn = _configuration["db:connection"]; return View(); } // 使用IOptions读取 public IActionResult ByOptions() { var dbConn = _dbOptions.Value.connection; return View(); } // 使用客户端实例读取(需挂载Program.ConfigClient) public IActionResult ByInstance() { var userId = Program.ConfigClient["userId"]; return View(); } }
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务