从0到1部署Snipe-IT资产管理系统:一份踩坑后整理的Docker实操清单
【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it
Snipe-IT 是一款免费开源的 IT 资产与软件许可证管理系统,能帮你记录每一台设备的归属、采购时间、折旧情况和许可证数量。很多团队在部署时被 PHP 版本、扩展依赖、数据库迁移折腾得够呛,本文用 Docker 容器化方案,把踩过的坑提前标记出来,带你在一小时内跑通一套可用系统。
先做选择:为什么推荐容器化而不是源码安装
传统方式部署 Snipe-IT 需要自己准备 PHP 8.x、Composer、MySQL/MariaDB,还要逐个开启 GD 扩展、配置 Nginx 或 Apache、处理 storage 目录权限。这套流程在干净服务器上顺利的话要 40 分钟,遇到环境问题可能搭进去一整天。
Docker 方案只做三件事:拉镜像、填变量、启动,PHP 和 Web 服务器环境全部封装在镜像里。对于只想尽快用起来的中小团队,这是性价比最高的路径。
如果你的场景特殊(内网离线、需要深度定制源码),再考虑源码安装;否则直接往下走。
动手前先明确 3 件事
- 需要一个域名或 IP 地址,后续填写
APP_URL要用,局域网 IP 也可以。 - 准备两个随机密码:一个给数据库,一个做应用密钥
APP_KEY。 - 确认 Docker 与 Compose 已安装,先跑一下版本命令验证:
docker --version docker compose version任一条命令报错,请先自行安装 Docker 环境,否则后续步骤无法继续。
部署实操:5 步跑通整套系统
第 1 步:拿到项目代码与镜像模板
克隆仓库,进入目录:
git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it仓库里的docker-compose.yml定义了 app(Snipe-IT 应用)和 db(MariaDB 11.4)两个服务,并声明了db_data、storage两个持久化数据卷——容器删了数据也不会丢。项目自带的镜像编排、启动脚本都在 docker/ 目录下,docker/docker.env 是环境变量模板,接下来就要用到它。
第 2 步:生成 APP_KEY(最容易踩的坑)
APP_KEY是 Laravel 应用的加密密钥,缺失时容器会直接退出,而且日志里不会报错,只有一句提示。不要手工随便编一个,用官方方式生成:
docker run --rm snipe/snipe-it php artisan key:generate --show把输出的长字符串完整复制保存,形如base64:xxxxxxxx。
第 3 步:创建并修改 .env 配置
复制模板并编辑:
cp docker/docker.env .env模板里DB_HOST、MAIL_HOST等字段是占位符,必须改成实际值。一个最小可运行的配置如下(按需裁剪):
# 应用基础配置 APP_ENV=production APP_DEBUG=false APP_KEY=base64:上一步生成的长字符串 APP_URL=http://你的服务器IP:8000 APP_TIMEZONE=Asia/Shanghai APP_LOCALE=zh-CN # 数据库配置(与docker-compose.yml中db服务对应) DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=snipeit DB_USERNAME=snipeit_user DB_PASSWORD=替换为强密码 MYSQL_ROOT_PASSWORD=替换为另一个强密码 # 邮件先保持禁用或填入真实SMTP MAIL_MAILER=smtp MAIL_HOST=smtp.example.com MAIL_PORT=587 MAIL_USERNAME=your@example.com MAIL_PASSWORD=your-password # 图片处理库 IMAGE_LIB=gd要点说明:
DB_HOST=db必须写db,这是 Compose 网络内的服务名,不是 IP。APP_DEBUG生产环境务必保持false,否则报错页面会泄露敏感信息。APP_LOCALE=zh-CN可让系统界面显示中文。- 邮箱暂时不配也不影响启动,先跑通再补。
第 4 步:启动并确认健康状态
docker compose up -d docker compose ps看到两个服务都是running、db 显示 healthy 即正常。启动脚本会自动执行数据库迁移(docker/startup.sh 中内置了php artisan migrate --force),所以不需要手动进容器迁移。
第一次启动要拉取镜像,约几百 MB,耐心等几分钟。查看日志确认启动流程:
docker compose logs -f app第 5 步:初始化系统与管理员账号
浏览器访问http://你的服务器IP:8000,首次访问会进入安装向导页面,填写站点名称、管理员邮箱和密码即可创建管理员账号。Snipe-IT 没有默认密码,向导创建的就是唯一管理员,请设置强密码并妥善保存。
到这里,一套可用的资产管理系统就跑通了。仓库里带了完整的演示图片和示例数据供你熟悉界面,例如厂商管理模块的效果可参考 public/img/demo/manufacturers/。
上生产前:给数据加上双保险
把数据卷落到宿主机目录
默认的 Docker 卷不好直接备份,建议改成挂载目录。在docker-compose.yml中把两个服务的 volumes 改为:
volumes: - ./data/db:/var/lib/mysql # MariaDB 数据文件 - ./data/storage:/var/lib/snipeit # 上传文件与备份改完后执行docker compose down && docker compose up -d重建。
用内置命令做备份
Snipe-IT 自带备份命令,可直接备份数据库加文件到 storage 卷的 dumps 目录:
docker compose exec app php artisan backup:run docker compose exec app php artisan backup:list建议把它写进 cron 定时执行,配合把 dumps 目录同步到异地,数据就安全了。
三条高频报错的现场解法
报错 1:容器启动即退出,日志提示APP_KEY
原因:第 2 步没做。用docker run --rm snipe/snipe-it php artisan key:generate --show重新生成并写入.env,然后docker compose up -d。
报错 2:页面报数据库连接失败
原因:多半是.env中DB_HOST写成了 IP 或主机名,改为db;或者数据库密码与docker-compose.yml中MYSQL_PASSWORD不一致。修改后重启:
docker compose restart app报错 3:上传图片/附件提示文件过大
在.env中追加上传限制(单位 MB),重启生效:
echo "PHP_UPLOAD_LIMIT=100M" >> .env docker compose restart app启动脚本会自动改写 PHP 的upload_max_filesize与post_max_size(见 docker/startup.sh)。
落地使用:先录 10 台设备再谈管理
系统空跑没有意义,建议按此顺序录入基础数据:厂商 → 分类 → 状态标签 → 模型 → 资产。
- 厂商:先建"联想""戴尔"等,录入时顺便填官网与联系方式。
- 分类:建"笔记本电脑""显示器""软件许可证"等,分类决定后续报表口径。
- 状态标签:至少建"可用""维修中""已报废",Snipe-IT 靠状态标签判断设备能否外借。
- 资产:逐台录入,或直接用 CSV 批量导入。
仓库的 sample_csvs/assets-sample.csv 是官方导入模板,表头包含名称、资产标签、分类、序列号、采购日期、采购价格等字段。在后台"管理 → 导入"上传 CSV,按模板映射字段即可,一次可导入数百条记录,快速完成存量设备盘点。
版本升级与日常维护
Snipe-IT 迭代频繁,升级三步走:
# 1. 先备份 docker compose exec app php artisan backup:run # 2. 拉新代码并重建 git pull docker compose build --pull docker compose up -d # 3. 迁移与清缓存 docker compose exec app php artisan migrate --force docker compose exec app php artisan config:clear日常巡检两条命令:docker compose ps看服务状态,docker compose logs -f app看应用日志。
部署速查清单
- Docker 与 Docker Compose 版本验证通过
- 项目代码克隆完成,进入仓库根目录
- 通过
key:generate --show生成 APP_KEY 并写入.env .env中数据库密码与 Compose 配置一致,DB_HOST=dbdocker compose up -d后docker compose ps全部 running- 浏览器打开
http://IP:8000走完安装向导并设置管理员强密码 - 数据卷已挂载到
./data/目录 - 已执行一次
backup:run验证备份链路 - 已录入厂商、分类、状态标签等基础数据
按这份清单走完,你已经拥有了一套可扩展的资产管理系统。下一步建议尝试接入 LDAP 登录,或配置邮件提醒来接收许可证到期通知,让系统从"能用"变成"好用"。
【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考