Snipe-IT Docker 部署实战十分钟把资产管理系统跑起来【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-itSnipe-IT 是一款免费开源的 IT 资产和许可证管理系统——公司里谁领走了哪台笔记本、哪张许可证下周到期全靠它记账。Snipe-IT Docker 部署的思路并不复杂应用、数据库、定时任务各进各的容器你只管端口和两个数据卷。手搓环境的痛容器一次替你解决以前自己装这套系统apt 装 Apache配 PHP 扩展gd、bcmath、ldap 一个不能少再折腾 composer 依赖和文件权限环境漂移排查起来全是泪。容器化之后这些活都干完了Dockerfile 基于 Ubuntu 24.04 装齐 Apache 和 PHP 8.3 全家桶startup.sh 负责建数据目录、跑数据库迁移、修权限supervisord.confSupervisord 是轻量进程管理器同时拉起 Apache 和 Laravel 任务调度器。你只需要记住三个东西一个 app 容器、一个 db 容器、两个命名卷。 快速拉起从 clone 到浏览器访问先克隆仓库拿到 compose 编排文件git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it目录里能看到 docker-compose.yml 就算成功。compose 启动依赖一个.env文件用仓库自带模板初始化即可cp docker/docker.env .env这是 compose 的启动前提生成新文件而已不动仓库里任何内容。模板里APP_KEY一行是注释状态这正是下一步要处理的。APP_KEY 是 Laravel 的加密密钥没有它容器会直接退出。下面这条命令用镜像跑一次生成脚本只输出密钥、不启动服务docker run --rm -it snipe/snipe-it:latest php artisan key:generate --show输出形如base64:xxxx…把这串值填回.env的APP_KEY一行。然后正式用 docker compose 启动docker compose up -d docker compose psps里 app 和 db 都到Up (healthy)才算就绪首次镜像拉取要几分钟属正常现象。打开浏览器访问http://你的IP:8000走一遍初始安装向导。如果向导没出现直接在容器里建管理员docker compose exec app php artisan snipeit:create-admin \ --first_nameAdmin --last_nameUser --emailadminexample.com \ --usernameadmin --password换成强密码看到创建成功的输出后用这个邮箱密码登录就能看到资产登记、借还、维护这些模块了。.env 配置里哪几行不能乱改APP_URL访问地址邮件通知里的链接、资产标签上的网址都由它生成填你的域名或http://IP:8000。DB_DATABASE/DB_USERNAME/DB_PASSWORDcompose 会把它们直接注入 MariaDBMySQL 社区分支做初始化见 docker-compose.yml 里的MYSQL_DATABASE映射。数据库建好后再改要导数据想清楚再填。APP_PORT宿主机端口默认8000。容器内部固定监听 80端口映射只改冒号前面的数字。MAIL_*不配也能跑但借还通知、验收提醒全依赖它。完整参数和注释见 docker/docker.env。另外仓库还有一份 dev.docker-compose.yml附带 Redis 和 MailHog本地收件箱适合先拿来做本地联调。数据落盘两个命名卷管住所有家当.env 配置 管行为数据则全押在 docker-compose.yml 声明的两个命名卷上这是整个 Snipe-IT Docker 部署里最该背下来的一段db_data挂到/var/lib/mysql数据库本体。storage挂到/var/lib/snipeit内部分四块——data/uploads公开图片、data/private_uploads私有文件如验收签名、dumps备份文件、keysOAuth 密钥、LDAP 证书。容器内对应路径是 Dockerfile 里的软链指过去的所以重启、改端口、升级镜像都不会碰到数据。备份走应用自带的备份/恢复流程恢复命令定义见 RestoreFromBackup.php文件统一落在dumps目录——它就在storage卷里。需要回滚时docker compose exec app php artisan snipeit:restore命令会按交互提示让你选择备份文件选错会报错重新执行即可。️ 生产加固HTTPS、上传限制与版本升级HTTPS 不用改任何配置把证书放进storage卷的ssl目录文件名固定为snipeit-ssl.crt和snipeit-ssl.key用docker volume inspect可查到该卷在宿主机的实际位置。startup.sh 启动时检测到这两个文件就自动开启 SSL 模块检测不到就自动禁用重启即生效。大文件上传默认会被 PHP 上限卡住startup.sh 留了个开关在.env加一行PHP_UPLOAD_LIMIT100单位 MB同时调整 upload_max_filesize 和 post_max_size然后docker compose up -d容器日志里能看到Changing upload limit to 100M说明生效。升级比传统部署省一步——不用手动跑迁移因为 startup.sh 每次启动都会执行php artisan migrate --force数据库迁移自动跟上docker compose pull docker compose up -d docker compose logs -f app看到迁移输出结束、Apache 启动信息出现升级完成。想锁定版本时在.env设APP_VERSION镜像标签是${APP_VERSION:-latest}升级前先记下当前号方便出问题时回滚。出事了怎么查现象、原因、一条命令修复容器反复重启日志出现Please re-run this container with an environment variable $APP_KEY原因.env里APP_KEY是空的startup 脚本检测到就主动退出。 修复docker run --rm snipe/snipe-it:latest php artisan key:generate --show生成后写回.env再docker compose up -d。app 一直Restarting日志全是数据库连接失败原因MariaDB 首次初始化还没跑完健康检查没通过compose 的service_healthy条件会让 app 反复等待重试。 修复docker compose logs db看初始化进度healthy之后 app 会自动拉起通常无需干预。端口 8000 访问不通或浏览器直接 502原因宿主机 8000 被别的进程占了端口映射没绑上。 修复.env里改APP_PORT8080docker compose up -d后换新端口访问。上传头像、图片报 413 或静默失败原因PHP 默认上传上限一般 2M低于文件体积。 修复.env追加PHP_UPLOAD_LIMIT100然后docker compose up -d。两个命名卷加一个.env就是这套 Snipe-IT Docker 部署的全部家当镜像升级、数据库迁移、HTTPS 开关都已自动化留给你的日常只剩备份和翻日志。建议上线当天就给storage卷打个完整快照比如docker run --rm -v snipe-it_storage:/d -v $(pwd)/backup:/o alpine tar czf /o/snipeit.tar.gz -C /d .——备份文件、上传图、证书一次全带上比单导数据库更全。【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
