尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
zsh-artisan Docker深度指南:如何自动识别compose文件并智能调用Sail与docker compose
zsh-artisan Docker深度指南如何自动识别compose文件并智能调用Sail与docker compose【免费下载链接】zsh-artisanLaravel artisan plugin for zsh to help you to run artisan from anywhere in the project tree, with auto-completion, and it can automatically open files created by artisan!项目地址: https://gitcode.com/gh_mirrors/zs/zsh-artisanzsh-artisan 是一款专为 Laravel 项目打造的 zsh 插件让你在项目的任意子目录中直接运行artisan命令并自带 Tab 自动补全。它最被低估的能力之一是Docker 环境的智能感知插件会自动识别项目根目录下的 compose 文件判断项目是否使用 Laravel Sail并在docker compose与docker-compose之间自动选择可用命令帮你把 artisan 命令精准地送进容器里执行 工作原理一次命令背后的三步决策当你敲下artisan migrate时插件的核心逻辑 artisan.plugin.zsh 会依次完成三次判断向上查找 artisan从当前目录一路查到根目录确认你身处 Laravel 项目第 60-73 行的_artisan_find函数扫描 compose 文件在 artisan 所在目录检测是否存在 compose 配置文件选择执行方式根据 compose 文件内容决定用php、sail还是docker compose执行整个决策过程在 artisan.plugin.zsh 第 18-36 行完成无需你做任何配置。自动识别 compose 文件的规则插件只检查artisan 所在目录的当前层maxdepth 1即项目根目录依次匹配这四种文件名源码第 18 行compose.yamlcompose.ymldocker-compose.yamldocker-compose.yml命中任意一个即视为 Docker 项目。这也是为什么 Laravel Sail 项目必须把docker-compose.yaml放在项目根部——放在docker/子目录里是检测不到的。智能调用 Sail靠一个环境变量识别找到 compose 文件后插件并不会盲目使用docker compose exec而是先检查它是否是Laravel Sail项目。判断方式非常直接在 compose 文件中查找环境变量LARAVEL_SAIL: 1源码第 24-25 行。有该标记→ 走vendor/bin/sail artisan ...由 Sail 接管执行没有该标记→ 走通用 docker compose 流程为什么 Sail 要特殊对待因为 Sail 封装了服务依赖编排自动确保 Nginx、MySQL 等配套服务就绪直接docker compose exec反而容易踩到服务未就绪的坑。兼容新旧命令docker compose vs docker-composeDocker 从 Compose V2 起把命令合并成了docker compose而旧版仍需docker-compose。插件通过_docker_compose_cmd函数源码第 85-91 行优雅地解决了这个兼容问题先静默执行一次docker compose成功 → 使用新语法docker compose失败 → 回退到旧语法docker-compose这样无论你是 Docker Desktop 最新版还是多年前的老环境插件都能自动适配 ✅服务名匹配如何知道 exec 进哪个容器compose 项目里可能有十几个服务插件用一条正则来锁定 Laravel 应用容器源码第 28 行app | php | api | workspace | laravel.test | webhost这覆盖了绝大多数 Laravel 项目的命名习惯。执行命令形如docker compose exec app php artisan migrate还有一个容易被忽略的细节插件会判断当前终端是否为 TTY源码第 29-34 行。交互式终端下直接exec而在 Tab 补全触发等非交互场景下自动追加-T参数避免补全卡住或容器异常挂起。实际效果对比在tests/Feature目录深处假设项目使用 Sail$ pwd ~/MyProject/tests/Feature $ artisan make:model MyAwesomeModel Model created successfully.你不需要cd回项目根目录不需要写./vendor/bin/sail artisan也不用纠结本机是docker compose还是docker-compose——插件全部代劳。快速安装以 oh-my-zsh 为例克隆仓库到自定义插件目录注意目录名用artisan而非仓库名git clone https://gitcode.com/gh_mirrors/zs/zsh-artisan.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/artisan然后在~/.zshrc的plugins(...)中加入artisan即可插件主文件为仓库根目录的 artisan.plugin.zsh。常见问题Q检测到 compose 文件但容器没启动命令会怎样命令会原样透传给 docker报出标准的 no such service/container 错误——插件不会替你启动容器请先sail up或docker compose up -d。Q为什么我的容器名没被匹配到如果你的服务名不在app/php/api/workspace/laravel.test/webhost之列插件会跳过 Docker 流程报错。此时建议重命名服务或直接用sail artisan手动执行。Q非 Sail 项目还能享受哪些能力任意 compose 项目只要有匹配的服务名即可在任意子目录运行artisanTab 补全同样基于容器内artisan list实时拉取自定义命令也能被识别。小结zsh-artisan 把在 Docker 环境里跑 artisan这件繁琐的事压缩成了三步自动决策认文件、认 Sail、认命令语法。配合自动补全与make:*后自动打开新建文件的特性设置ARTISAN_OPEN_ON_MAKE_EDITOR即可开启它是 Laravel 容器化开发工作流里一个轻量却实用的加速器。【免费下载链接】zsh-artisanLaravel artisan plugin for zsh to help you to run artisan from anywhere in the project tree, with auto-completion, and it can automatically open files created by artisan!项目地址: https://gitcode.com/gh_mirrors/zs/zsh-artisan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

打通转化数据闭环:google-ads-python离线转化上传与增强转化完整指南

打通转化数据闭环:google-ads-python离线转化上传与增强转化完整指南

打通转化数据闭环:google-ads-python离线转化上传与增强转化完整指南 【免费下载链接】google-ads-python Google Ads API Client Library for Python 项目地址: https://gitcode.com/gh_mirrors/go/google-ads-python 📌 本文面向新手讲解如何使…

📅 2026/10/28 19:04:16
CP-SAT Primer编码模式指南:5个设计模式让优化代码可维护、可测试、可扩展

CP-SAT Primer编码模式指南:5个设计模式让优化代码可维护、可测试、可扩展

CP-SAT Primer编码模式指南:5个设计模式让优化代码可维护、可测试、可扩展 【免费下载链接】cpsat-primer The CP-SAT Primer: Using and Understanding Google OR-Tools CP-SAT Solver 项目地址: https://gitcode.com/gh_mirrors/cp/cpsat-primer CP-SAT Pr…

📅 2026/10/11 20:27:09
FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解

FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解

FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解 【免费下载链接】FlexLabs.Upsert FlexLabs.Upsert is a library that brings UPSERT functionality to common database providers for Entity Framework in their…

📅 2026/9/4 3:43:57
MORE NEWS

更多资讯

📰

智能从来不是工具,是结构:Copilot 救不了组织

WGA 在 2026 年 10 月发布的一份组织设计报告里引过一项覆盖 5179 名客服的研究:AI 辅助让人均处理量涨了 14%,新手和低技能员工涨了 34%。WGA 据此判断,工作流、排队、升级路径与汇报线,四样一样没碰。 人更快了,组织…

📰

2026日语能力考试N1、N2、N3、N4、N5历年真题及答案合集PDF(2010-2026年)

2026年7月日本语能力测试(JLPT)考试公告2026年度12月日本语能力测试(JLPT)N1–N5级别考试定于12月6日举行。备考资源汇总为协助考生系统备考,现提供以下历年真题资料:资源类型内容说明格式说明真题试卷2010…

📰

CAN 位时序与 500kbps 参数推导:HAL 里看不到 0x001A0005,但它就在那

做车载 ECU 诊断工具链,第一步绕不过去的是把 CAN 波特率配准。我用的是STM32F407ZGT6最小系统板, 它的 CAN_BTR 寄存器有 0x001A0005这个值,要把它从 42MHz 推导出来,才敢说"会 CAN"。一、先确认你的时钟到底是多少CAN 挂在 APB1 …

📰

门店上 AI 项目怎么立项排期?6 个阶段、8 到 12 周参考周期与 3 个最容易返工的节点

门店 AI 项目从立项到上线,中小连锁的参考周期是 8—12 周,其中约 6 周花在数据和评测上。大量项目返工不是因为模型不行,而是立项时把排期压得太紧、数据接入和验收指标没有提前定义清楚。 这篇笔记给一份可直接套用的立项排期表&#xff1a…

📰

2026 AI 全栈开发面试题:前端、后端、模型、部署一篇打通

✍️ 作者:王文峰(外号:神秘小峯 / 山峯)|中国国学、传统文化与代码爱好者的程序人生,期待你的关注和支持! 2026 AI 全栈开发面试题:四层考点全解析 一、AI 全栈 = 四层能力模型 二、交互层:流式是 AI 应用的门面 考点 1:流式输出选 SSE 还是 WebSocket? 考点 2:最…

📰

结合第三方视觉平台开发基本视觉应用,是机器视觉工程师的核心能力之一

结合第三方视觉平台开发基本视觉应用,是机器视觉工程师的核心能力之一。下面从平台选型、典型应用开发流程、关键技能点三个维度展开,帮你梳理一条可落地的路径。一、第三方视觉平台选型 不同平台定位差异较大,选型要看项目规模、预算和团队技…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬