
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
PHP + Docker框架,提供Web应用开发的核心功能抽象与多环境部署支持。
SeanMorris/Ids(简称Ids)是一个集成PHP和Docker的Web开发框架,旨在为Web应用提供通用领域原语。它将路由、请求处理、配置管理、日志记录、会话管理和数据库访问等核心功能抽象为简洁且高效的接口,帮助开发者构建安全、快速且易于维护的应用。Ids支持在Docker环境中运行,也可作为Composer包集成到现有项目,适用于从开发、测试到生产的全流程部署。
E_NOTICE级别)终止执行,排除 vendor 目录产生的E_DEPRECATED错误,确保代码稳定性。base、prod、dev、test四种构建目标,各目标暴露不同端口,可并行运行无冲突。idilic命令,支持项目检测、环境控制和功能扩展。make命令构建不同环境镜像,集成Docker Compose实现服务编排。+工具名语法(如@dev+graylog)临时启用额外服务(如Graylog、Inotify)。.env文件、YAML/JSON配置,支持主机和端口级别的配置覆盖。Ids适用于各类PHP Web应用开发,尤其适合需要:
项目内集成
通过Composer将Ids添加到现有项目:
bashcomposer require seanmorris/ids
全局安装Idilic CLI
全局安装以使用idilic命令行工具:
bashcomposer global require seanmorris/ids:dev-master
将Composer全局vendor/bin添加到环境变量(如~/.bashrc):
bashexport PATH="$HOME/.composer/vendor/bin:$PATH"
使用Composer创建Ids项目模板,并启动服务:
bashcomposer create-project seanmorris/ids-project -s dev --remove-vcs cd ids-project make @dev start-bg # 启动php、apache、mysql服务(后台运行)
项目模板地址:https://github.com/seanmorris/ids-project
环境目标说明
Ids默认提供4种构建目标,特性如下:
require-dev依赖。require-dev依赖。require-dev依赖,适合开发。require-dev依赖,用于测试。切换环境目标
通过make @目标名 命令临时指定目标,或make stay@目标名持久切换:
bashmake @dev build # 临时使用dev目标构建 make stay@test # 持久切换到test目标
扩展环境目标
infra/compose/[TARGET].yml定义Docker Compose配置。config/目录下创建.env.[TARGET]设置目标特定环境变量。infra/docker中添加Dockerfile的FROM base as TARGET部分定义构建步骤。启动/停止/重启
bashmake start # 后台启动服务(无输出) make start-fg # 前台启动服务(实时输出) make start-bg # 后台启动服务(前台流式输出日志) make stop # 停止当前目标的所有服务 make stop-all # 停止当前目标的所有相关服务(包括已移除配置的服务) make restart # 后台重启服务(无输出) make restart-fg # 前台重启服务(实时输出) make restart-bg # 后台重启服务(前台流式输出日志)
bashmake list-images # 列出当前项目、目标和分支的所有镜像 make list-tags # 列出当前项目、目标和分支的所有镜像标签 make push-images # 推送当前项目、目标和分支的所有镜像 make pull-images # 拉取当前项目、目标和分支的所有镜像
make hooks注册Git钩子。仓库/项目:gitTag-target、仓库/项目:date-target、仓库/项目:latest-target。仓库/项目:gitTag-target-branch、仓库/项目:date-target-branch、仓库/项目:latest-target-branch。.publishing文件中定义发布规则(如master:prod),实现git push时自动推送镜像。Docker Hub提供以下镜像,支持base、dev、test目标:
拉取镜像:
bashdocker pull seanmorris/ids.idilic:latest docker pull seanmorris/ids.server:latest
扩展镜像(不建议使用latest标签):
DockerfileFROM seanmorris/ids.idilic:TAGNAME FROM seanmorris/ids.server:TAGNAME
环境变量与配置文件
配置可通过环境变量或.env文件设置,优先级从高到低为:
.env_TARGET > .env_TARGET.default > .env > .env.default
config/.env.default或config/.env.[TARGET].default中定义(可提交至版本控制)。config/.env或config/.env.[TARGET]中定义(不提交至版本控制)。配置读取
环境变量以IDS_为前缀,支持多级结构,例如:
bashIDS_SOME_VAR=value IDS_SOME_OTHERVAR=other value
在PHP中通过Settings类读取:
phpuse \SeanMorris\Ids\Settings; $someVar = Settings::read('some', 'var'); // 读取IDS_SOME_VAR $someOtherVar = Settings::read('some', 'otherVar');// 读取IDS_SOME_OTHERVAR $some = Settings::read('some'); // 获取包含var和otherVar的对象
数组配置
通过变量名加下划线_定义数组,值以空格分隔(引号内保留空格):
bashIDS_ARRAY_=first "second element" "third ""with quotes""."
读取:
php$array = Settings::read('ARRAY'); // 结果:['first', 'second element', 'third "with quotes".']
主机和端口特定配置
通过IDS__主机名__端口__变量名格式覆盖特定主机/端口的配置(主机名中非字母数字替换为_,连字符替换为___):
bashIDS__EXAMPLE_COM__80__SOME_VAR=HTTP值 # example.com:80的SOME_VAR IDS__EXAMPLE_COM__443__SOME_VAR=HTTPS值 # example.com:443的SOME_VAR
读取方式不变,系统自动根据当前请求的主机和端口匹配配置。
密钥管理
.entropy文件中定义CONFIG_KEY:ENTROPY_KEY(如DB_PASSWORD:db),启动时自动生成32位随机值并写入.env。YAML/JSON配置
在config/[主机名]/或config/[主机名;端口]/目录下放置settings.yml或settings.json,支持主机/端口级别的配置。默认配置可放在settings.defaults.yml或settings.defaults.json(可提交至版本控制)。
XDebug
dev镜像内置XDebug,通过.env.dev中的XDEBUG_CONFIG_环境变量配置,默认连接DHOST_IP的9000端口。
Graylog日志
通过设置环境变量启用Graylog日志:
bashIDS_LOGGERS_=\SeanMorris\Ids\Logger\Gelf IDS_GRAYLOG_HOST=graylog IDS_GRAYLOG_PORT=12201
启动Graylog服务:
bashmake @dev+graylog start # 启动dev环境并启用Graylog make graylog-restore # 恢复默认GELF TCP输入配置
模板文件
扩展名为*.idstmp.*的文件会被预处理为*.___gen.*,支持Makefile语法(如变量替换、Shell命令),例如:
dockerfile# infra/docker/aptcache.idstmp.dockerfile FROM ${BASELINUX} # generated @ $(shell date)
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务