GLM-5.3-Flash-BF16图像与视频理解实战教程:从16到240K视觉Token,参数调优避坑清单
开源仓库管理系统 ModernWMS 部署与选型完整指南:从 Docker 快速上机到生产上线
仓库的早晨往往从三个问题开始:账实对不上、拣货慢、纸质单据满天飞。ModernWMS 是一个开源 WMS(仓库管理系统),用 .NET 7.0 做后端、Vue 3.2 做前端,目标很明确:帮 IT 预算有限的中小企业把收货、库存、发货这几条线搬到系统里。先给结论:如果你的仓库是单仓、SKU 在几万以内,它值得放进选型清单;下面按"谁适合→业务怎么跑→怎么部署→生产要点→使用边界"的顺序讲清楚。
这套系统适合谁
作者团队做过多年 ERP 项目实施,把原商业系统里的 WMS 部分剥离出来开源,定位就是"简易但完整"。它不是大而全的供应链平台,而是把中小仓库的日常流程做透:
- 开源免费:Apache 2.0 协议,没有许可费用,可自由商用和二次开发;
- 多数据库兼容:SQLite、MySQL 8.0+、SQL Server 2017+、PostgreSQL 12+ 四种可选,小场景和大场景各取所需;
- Docker 快速部署:官方镜像一条命令起服务,容器内已打包 nginx 与 .NET 运行时;
- 界面中英切换:内置 i18n,中文、英文、繁体中文语言包都在仓库里(frontend/src/languages/langsJson/);
- 技术栈直白:前端 Vue 3.2 + TypeScript + VXE Table,后端 .NET 7.0 + Entity Framework Core,招人和维护都不费劲。
| 关注点 | ModernWMS 的做法 |
|---|---|
| 费用 | Apache 2.0 开源,零许可费 |
| 数据库 | SQLite / MySQL / SQL Server / PostgreSQL 四选一 |
| 部署 | Docker 容器化或源码编译(Linux、Windows 均可) |
| 界面 | 中/英/繁中,VXE Table 表格交互 |
一票货的旅程:从收货到发货
ModernWMS 把业务拆成三段:收货入库、库存管控、拣货发货。三段都用"状态标签页"驱动,每个状态一个独立操作界面,而不是把所有数据堆在一张表里。
收货入库:五步状态流,货走到哪一步一目了然
收货要解决的问题是"货到了但不知道处理到哪一步"。系统把入库流程切成五个状态:到货通知→待到货→待卸货→待分拣→待上架,外加收货明细。每个状态是一个独立标签页,当前阶段的单据就摆在对应的页面上;到货通知支持 Excel 批量导入,减少手工录入错误。筛选项按供应商名称、规格名称组织,方便按票追溯。
ModernWMS 收货管理界面:五个状态标签页对应入库流程的每个阶段
库存管控:移动、冻结、调整、盘点各管一事
入库之后,库存会自然发生四类变化,系统对应四个独立入口(对应 frontend/src/view/warehouseWorking/ 下的四个目录):
- 库存移动:库位间调拨,记录从哪到哪;
- 库存冻结:质量异常、预留占用等场景,冻结的库存不可被发货拣用;
- 库存调整:盘点前后、损耗报废的账目修正,调整单据留痕;
- 库存盘点:账实核对,盘点结果落到调整。
配合基础设置里的仓库、库位、商品、货主主数据,库存账目从"一团数"变成"每笔都有单据"。
拣货发货:九个状态标签页,订单卡在哪个环节直接可见
发货管理(对应 frontend/src/view/deliveryManagement/)用标签页把订单状态横向铺开:INVOICE(发货单)→ PRE SHIPMENT(预发货)→ NEW SHIPMENT(新发货)→ GOODS TO BE PICKED(待拣货)→ PICKED(已拣货)→ TO BE PACKAGED(待打包)→ PACKAGED(已打包)→ TO BE WEIGHED(待称重)→ WEIGHED(已称重),后面还有出库、签收状态。每张发货单带总数量、总重量、总体积和创建人,按发货单号、单据状态、客户名称检索,哪个环节卡单直接可见。
发货管理界面:状态标签页加发货单号、状态、客户名称检索
第一次跑起来:最短可运行路径
部署前先做三件检查
- 操作系统在支持范围内:Linux 侧为 Ubuntu 18.04/20.04/22.04、CentOS Stream 8/9、RHEL 8/9、Debian 10/11、openSUSE 15;Windows 10 1607 及以上、Windows Server 2012 及以上;
- 已安装 Docker(容器方案);
- 80 端口(前端)与 20011 端口(后端 API)未被占用。
Docker 部署:一条命令起服务
sudo apt install docker.io
sudo docker pull modernwms/modernwms:1.0
sudo docker run -d -p 20011:20011 -p 80:80 modernwms/modernwms:1.0 ./run.sh
一个要注意的坑:镜像里前端写死了 127.0.0.1 的后端地址。如果要从别的机器访问,进入容器把前端静态文件里的 127.0.0.1:20011 替换为服务器实际 IP,然后 docker restart 容器即可。
验证部署是否成功
浏览器打开 http://服务器IP,初始账号 admin,密码 1。能看到下方主界面、左侧菜单完整加载,再随便进一个模块(比如收货管理)表格能拉到数据,就基本没问题;后端 API 监听在 20011 端口,可顺手确认连通。
ModernWMS 主界面:左侧导航即系统功能地图
备选路线是源码编译(README 提供 Linux 与 Windows 两套完整步骤):装好 .NET SDK 7.0 和 NodeJS 16.13.1,前端 yarn && yarn build、后端 dotnet publish,再配 nginx 托管前端、dotnet ModernWMS.dll --urls http://0.0.0.0:20011 启动后端。想改代码再编译的场景走这条路,具体命令见仓库 README。
上生产之前:数据库怎么选型、权限与性能要点
数据库怎么选型
| 规模 | 建议 | 说明 |
|---|---|---|
| 单机 / 体验 | SQLite | 仓库自带 wms.db,零配置,先用它把流程跑通 |
| 多用户生产 | MySQL 8.0+ | 最稳妥的选择,连接串改在 appsettings.json |
| 已有环境 | SQL Server 2017+ / PostgreSQL 12+ | 仓库提供对应连接串模板 |
切换数据库只需改后端 backend/ModernWMS/appsettings.json 里的 Database.db 与对应连接串,先 SQLite 后迁移到 MySQL 完全可行。
权限怎么配
"基础设置"模块下有三层入口(对应 frontend/src/view/base/ 下的目录):用户管理管账号,角色设置管角色,菜单设置把功能模块和操作权限分配给角色;角色、菜单与操作权限的绑定关系在后端 backend/ModernWMS.WMS/Entities/Models/Rolemenu/ 中落地。各业务实体自带 tenant_id 字段,为按租户/公司维度的数据隔离留了口子。关键操作有操作日志记录(backend/ModernWMS.WMS/Controllers/ActionLog/),出问题可回溯。
性能上盯这几点
前端:
- 表格用 VXE Table 渲染大数据量列表,分页参数(默认 20 条/页)按需调;
- Vite 构建自带代码分割,路由按需加载,首屏体积可控;
- 多语言包按模块组织,切换语言不重新发版。
后端:
- .NET 7.0 + Kestrel,单进程模型,按用户量规划机器规格即可;
- JWT 令牌默认 60 分钟过期,appsettings.json 的
TokenSettings.ExpireMinute可调; - 生产环境务必替换默认签名密钥(SigningKey),并收紧连接串口令;
- 日志走 NLog(backend/ModernWMS/nlog.config),保留磁盘空间。
使用边界:它能干什么、不擅长什么
适合:
- 单仓或少量仓库、SKU 万级以内的中小企业,把收货、库存、发货从纸面搬进系统;
- 需要快速验证仓储流程、再决定是否深度定制的团队。
需要谨慎:
- 多仓协同、跨区域调度、高并发出入库的场景,仓库没有提供微服务拆分或集群部署方案,别指望开箱即用;
- 它没有 PDA / 移动端 App 客户端,手持设备采集环节需要自研或二次开发。
集成路径:
- ERP 对接:后端是标准 REST API,带 Swagger 文档(ModernWMS_API,V1.0),ERP 或外部系统可直接调接口取数、推单;
- 物流 / 单据:基础设置里的运费设置管理承运商与运费规则,打印方案(frontend/src/components/hiprint/)配置单据打印,二维码、条形码对话框(frontend/src/components/codeDialog/)支持扫码与标签流转;
- 外设:条码枪在 Web 输入框内直接录入,按普通键盘输入处理即可,无需额外驱动。
ModernWMS 把"简易"和"完整"两个词同时做到了:功能不贪多,但收货、库存、发货这条主线是闭环的,部署路径也很短。建议先用 Docker 在一台空闲机器上把它跑起来,用测试数据完整走一遍收货、盘点、发货流程,再决定要不要进生产——源码就在仓库里,看不明白的地方直接翻代码比看文档更快。
更多推荐




所有评论(0)