ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

从0到1部署Snipe-IT资产管理系统:一份踩坑后整理的Docker实操清单

从0到1部署Snipe-IT资产管理系统:一份踩坑后整理的Docker实操清单 从0到1部署Snipe-IT资产管理系统一份踩坑后整理的Docker实操清单【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-itSnipe-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定义了 appSnipe-IT 应用和 dbMariaDB 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_ENVproduction APP_DEBUGfalse APP_KEYbase64:上一步生成的长字符串 APP_URLhttp://你的服务器IP:8000 APP_TIMEZONEAsia/Shanghai APP_LOCALEzh-CN # 数据库配置与docker-compose.yml中db服务对应 DB_CONNECTIONmysql DB_HOSTdb DB_PORT3306 DB_DATABASEsnipeit DB_USERNAMEsnipeit_user DB_PASSWORD替换为强密码 MYSQL_ROOT_PASSWORD替换为另一个强密码 # 邮件先保持禁用或填入真实SMTP MAIL_MAILERsmtp MAIL_HOSTsmtp.example.com MAIL_PORT587 MAIL_USERNAMEyourexample.com MAIL_PASSWORDyour-password # 图片处理库 IMAGE_LIBgd要点说明DB_HOSTdb必须写db这是 Compose 网络内的服务名不是 IP。APP_DEBUG生产环境务必保持false否则报错页面会泄露敏感信息。APP_LOCALEzh-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_LIMIT100M .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_HOSTdbdocker 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),仅供参考
返回列表