☰
InvenTree 开源库存管理系统完整指南:Docker 部署与物料跟踪全流程 30 分钟上手
2026/10/31 1:46:39 网站建设 项目流程

InvenTree 开源库存管理系统完整指南:Docker 部署与物料跟踪全流程 30 分钟上手

【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree

当你的料架超过几百种零件时,Excel 就不再是工具,而是风险:数量对不上、找不到货、采购靠聊天记录。这时你需要一套专门的系统。InvenTree 是一个开源库存管理系统,覆盖物料跟踪、条码管理、采购订单到库存盘点的完整链路,后端基于 Django,前端基于 React,免费可自托管。

🧭 选型:InvenTree 适合谁,不适合谁

先说清楚边界,避免装完才发现不对路。

适合的场景:中小企业、创客工作室、研发团队,SKU 在几百到几万之间,有仓库或多位置管理需求,多人协作但预算有限。它提供零件 BOM、采购订单、销售订单、生产订单、库存追踪这些"中间层"能力,且完全开放源码,你可以改。

不太适合的场景:如果你的公司已经有一套深度绑定财务和生产的重型 ERP,InvenTree 大概率只是重复建设;如果你只有二三十种物料,认真维护的 Excel 表格反而更省。

与 Excel 的分工:Excel 擅长临时计算和一次性分析,但没有操作审计、没有权限控制、多人同时编辑会互相覆盖。InvenTree 里每次库存变动都会生成一条追踪记录(谁、什么时候、从哪个位置、动了多少),这是电子表格给不了的。

与专业 ERP 的分工:ERP 强在财务总账和生产计划,但采购和库存模块的部署成本不低。常见做法是 InvenTree 先承担物料主数据、采购和库存这几块,跑顺了再通过 REST API 与 ERP 对账,而不是直接替换。

🔁 业务流程视角:从采购到出库,功能串讲一遍

把 InvenTree 的功能按真实业务流走一遍,比看功能清单更清楚它到底帮你做什么。

采购:先建供应商,再下采购单

第一步不是在下单界面找按钮,而是把数据基础建好。在 Purchasing 模块中维护供应商列表,再为零件挂上供应商部件(Supplier Part),记录不同数量档位的阶梯价格。这样下采购单时选的是带价格的供应商部件,而不是手填单价,比价和成本核算都在数据里。

采购订单支持复制历史订单(重复采购场景非常快)、设置收货计划日期、关联项目代码做成本归集。

入库:收货即建库存项,顺手打条码

采购单收货后,系统自动生成库存项(Stock Item)并挂到指定库位。这里有一个值得坚持的习惯:收货后立刻打印条码标签。InvenTree 支持 QR Code、Code 128 等常见格式,标签模板可以在系统内在线编辑。之后所有移动、消耗、盘点都以扫条码为准,手填库位和批号的机会降到最少。

在库:分类树、转移、盘点

分类体系建议按业务逻辑分两到三层,比如 Electronics → Connectors → Pin Headers,每级写一句简短描述。层级别贪多,超过四层之后没人记得住,检索效率反而下降。

在库日常操作集中在库存项表格的 Stock Options 下拉菜单里:转移(Move)、增减(Add/Remove)、盘点(Count)、合并(Merge)。转移操作支持一次勾选多个库存项,分别指定目标位置后批量提交,每个操作都留追踪事件。

盘点是库存系统最容易吃灰的功能,但 InvenTree 的 Count Stock 设计得比较省事:当前系统数量自动预填,你只改实盘数字,差异项用状态标签(OK / Attention Needed)一眼区分,盘点完还能在同一操作里顺带把货物移到新库位。有保质期的物料(胶水、电池、化学品)可以开启有效期管理,临期项会在列表中标出来。

出库:销售单与生产单驱动扣减

出库不是直接改数量,而是由单据驱动。销售订单或生产订单(Build Order)会先"分配"库存项,分配完成后才允许发货或生产;发货后库存自动扣减,未分配的缺口在订单页面上有明确提示。生产场景下还能直接为待分配的物料批量打印标签,配单、领料一次完成。

🐳 部署:Docker 与手动安装两条路线

Docker 一键部署

生产环境推荐 Docker。仓库的 contrib/container/ 目录下提供了现成的 compose 配方,包含五个容器:PostgreSQL(数据库)、gunicorn(Web 服务,默认监听 8000 端口)、django-q(后台任务)、Caddy(反代,对外 80/443)、Redis(缓存,可选)。

git clone https://gitcode.com/GitHub_Trending/in/InvenTree cd InvenTree/contrib/container

编辑.env文件,至少要改三处:INVENTREE_EXT_VOLUME指向本机持久化目录,INVENTREE_DB_USER/INVENTREE_DB_PASSWORD换成你自己的强密码。然后初始化数据库、建管理员、启动:

docker compose run --rm inventree-server invoke update docker compose run inventree-server invoke superuser docker compose up -d

默认在http://inventree.localhost打开登录页。所有持久化数据(数据库、上传文件、配置)都在INVENTREE_EXT_VOLUME这一个卷里,备份时拷走这个目录即可。

手动安装

需要完全控制运行环境时走手动路线,要求一台 Linux 机器、Python 3 和 PostgreSQL(或 MySQL)。流程是:装系统依赖 → 建独立用户 →git clone源码 → 建虚拟环境 →pip install数据库驱动 → 创建数据库 →invoke install装依赖 →invoke update建表 →invoke superuser建管理员。完整步骤见官方文档 docs/docs/start/install.md。这条路升级、排障都要你自己跟,但每一步都透明可控。

📋 上手清单:初始化配置 + 移动端连接

服务起来后,按这个顺序过一遍,大约一小时:

  1. 管理员与权限:superuser建好的账号登录后,进 Admin 配置用户组与角色,按"仓管、采购、只读"划分权限,而不是人人超管。
  2. 基础设置:公司信息、默认货币、时区,这些在 Setting 模块里改;邮件服务器配置好之后,低库存提醒、订单状态变更通知才有出口。
  3. 配置文件:Docker 部署下配置在数据卷的config.yaml;手动安装可参考模板 src/backend/InvenTree/config_template.yaml。改完重启容器生效。
  4. 移动端连接:手机安装 InvenTree App,新建服务器档案,填服务器地址(带端口)、用户名、密码,连接成功后档案旁显示绿色对勾。App 支持多服务器档案切换,扫码出入库、查看库存、跟踪订单都可以离线发起、联网同步。

🔌 进阶:插件、REST API 与前端定制

三条扩展路径,按需取用。

插件系统:仓库 plugins/ 目录内置了三十多个插件,覆盖条码扫描(Digi-Key、LCSC 等厂商条码解析)、货币汇率、标签打印、邮件与 Slack 通知、报表导出等。Docker 部署下装插件很简单:把插件放进数据卷的plugins/目录,或写进plugins.txt清单,重启容器即加载。想写自己的插件,文档在 docs/docs/plugins/,事件钩子和 Mixin 机制都比较完整。

REST API:后端基于 Django REST Framework,所有界面操作背后都是/api/...端点,浏览器直接访问根路径可以看交互式接口文档。与 ERP 对账、自建看板、定时拉库存快照,都走这条路。

前端定制:React 前端源码在 src/frontend/,主题、表格列、表单组件都是可插拔的,想贴合企业视觉风格或有特殊交互需求,从这里改比 hack 插件界面直接得多。

🧯 踩坑排查:五个高频故障场景

compose 直接拒绝启动,报变量未定义?.env里INVENTREE_DB_USER、INVENTREE_DB_PASSWORD、INVENTREE_DB_NAME、INVENTREE_EXT_VOLUME是必填项,缺一个 compose 就起不来。报错信息会写明缺哪个变量,照填即可。

容器反复重启,docker compose ps显示 unhealthy?依次看docker compose logs inventree-db、inventree-server。常见原因是数据卷目录权限不对(Linux 下用 root 建目录后 chown 给运行用户),或secret_key.txt与数据库不在同一个卷里,导致 server 与 worker 各用一套密钥,会话互相失效。

80/443 或 8000 端口被占用?改.env中的INVENTREE_HTTP_PORT、INVENTREE_HTTPS_PORT重新映射。注意 Automatic HTTPS(Caddy 自动签 Let's Encrypt 证书)依赖标准 80/443,换了端口就只能在外部反代层终止 SSL。

局域网其他设备打不开、App 连不上?多半是INVENTREE_SITE_URL还写的是inventree.localhost。把它改成局域网 IP 或域名,docker compose down && docker compose up -d重建后再试,并确认防火墙放行了映射端口。

Excel 导入失败,数据错行或整批拒绝?别直接导全量。先拿 10 行小文件走一遍导入会话,检查列映射(mapping)是否正确,确认成功后再批量导入。InvenTree 的导入器支持先预览、后提交,出错批次可以单独重导,不会污染已入库数据。

下一步

  1. 本周:按 Docker 路线把环境跑起来,导入你真实在用的 50 种零件和 3 家供应商,别用演示数据练手。
  2. 下周:给全部在库库存项打印条码标签,跑第一次 Count Stock 盘点,顺手校准账面数量。
  3. 第三周:挑一个对接需求(比如每日库存快照推给报表系统),用 REST API 写个最小脚本验证联通,再决定要不要上插件。

【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询