
!GitHub Workflow Status !GitHub stars !Commit Date !Nuget !Nuget !GitHub license
这是一个基于.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(); } }
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务