
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
SeanMorris/Ids(简称Ids)是一个PHP+Docker框架,提供Web应用开发的通用领域原语。它将路由、请求处理、配置管理、日志记录、会话管理和数据库访问等核心功能抽象为简洁且富有表现力的接口,帮助开发者编写高效、强大的代码。该框架默认对所有错误(包括E_NOTICE级别,排除供应商目录的E_DEPRECATED错误)终止执行,确保行为可预测。Ids专为Docker环境设计,但也可作为Composer包集成到任何项目中,支持部分或完整使用。其设计理念以安全、速度和易用性为核心优先级。
E_NOTICE)终止执行,确保代码健壮性base、prod、dev、test四种构建目标,支持并行运行且端口不冲突.env文件、YAML/JSON配置文件,支持基于主机名和端口的配置覆盖+toolname语法快速集成额外服务(如GrayLog、Inotify)项目内集成
bashcomposer require seanmorris/ids
全局安装(获取Idilc CLI)
bashcomposer global require seanmorris/ids:dev-master
将Composer全局vendor/bin添加到环境变量(.bashrc):
bashexport PATH="$HOME/.composer/vendor/bin:$PATH"
bash# 创建项目 composer create-project seanmorris/ids-project -s dev --remove-vcs cd ids-project # 启动服务(PHP、Apache、MySQL) make @dev start-bg
项目模板地址:https://github.com/seanmorris/ids-project
内置目标说明
| 目标 | 端口暴露 | 依赖安装 | 用途 |
|---|---|---|---|
| base | 无 | 不含require-dev | 基础镜像,不直接使用 |
| prod | 80(HTTP)、443(HTTPS,未实现) | 不含require-dev | 生产环境 |
| dev | 2020(HTTP)、3030(SQL) | 含require-dev | 开发环境 |
| test | 2021(HTTP)、3031(SQL) | 含require-dev | 测试环境 |
切换环境目标
bashmake @dev build # 使用dev目标构建 make @test test # 使用test目标运行测试
bashmake stay@dev # 切换到dev目标 make stay@test # 切换到test目标
扩展环境目标
infra/compose/[TARGET].yml(Docker Compose配置)config/.env.[TARGET](环境变量配置)infra/docker中添加目标相关Dockerfile片段(如FROM base as TARGET)构建项目
bashmake @dev build # 构建dev目标
启动/停止/重启服务
bash# 启动 make 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 # 列出当前项目、目标和分支的所有标签
推送/拉取镜像
bashmake push-images # 推送当前项目、目标和分支的所有镜像 make pull-images # 拉取当前项目、目标和分支的所有镜像
Git Hooks配置
bashmake hooks # 注册Git Hooks,实现提交时构建、推送时发布
发布配置
在项目根目录创建.publishing文件,定义分支与目标的映射:
master:test # master分支推送时发布test目标镜像 master:prod # master分支推送时发布prod目标镜像
标签生成规则
repository/project:gitTag-targetrepository/project:date-targetrepository/project:latest-targetrepository/project:gitTag-target-branchrepository/project:date-target-branchrepository/project:latest-target-branchDocker Hub上提供以下镜像:
拉取镜像
bashdocker pull seanmorris/ids.idilic:latest docker pull seanmorris/ids.server:latest
扩展镜像(Dockerfile)
dockerfileFROM seanmorris/ids.idilic:TAGNAME # 建议使用具体标签,而非latest FROM seanmorris/ids.server:TAGNAME
通过+toolname语法在命令中临时集成额外服务:
bashmake @dev+graylog start # 启动dev环境并集成GrayLog make @dev+inotify start # 启动dev环境并集成Inotify make @dev+graylog+inotify start # 同时集成GrayLog和Inotify
XDebug配置
dev镜像中,配置通过.env.dev的XDEBUG_CONFIG_前缀环境变量实现${DHOST_IP}:9000(项目运行机器的9000端口)Apt Cache(离线构建)
bashmake @dev+aptcache build # 联网构建时填充Apt缓存,支持后续离线构建
GrayLog集成
IDS_LOGGERS_=\SeanMorris\Ids\Logger\Gelfdev目标):
IDS_GRAYLOG_HOST=graylog IDS_GRAYLOG_PORT=12201
bashmake graylog-start # 启动GrayLog(别名gls) make graylog-stop # 停止GrayLog(别名gld) make graylog-restart # 重启GrayLog(别名glr) make graylog-backup # 备份配置(别名glbak) make graylog-restore # 恢复配置(别名glres)
全局安装后提供idilic命令,自动检测项目并执行操作:
bashidilic help # 查看可用操作
通过.idstmp.*文件扩展实现模板化配置,处理后生成.___gen.*文件(需排除版本控制)。例如:
infra/docker/aptcache.idstmp.dockerfile:
dockerfileFROM ${BASELINUX} # 变量将被Make预处理 # generated @ $(shell date) # by ${shell whoami} @ ${shell hostname}
配置文件优先级(从高到低)
config/.env_TARGET(目标特定,不提交版本控制)config/.env_TARGET.default(目标特定默认,提交版本控制)config/.env(通用,不提交版本控制)config/.env.default(通用默认,提交版本控制)环境变量命名规则
IDS_,例如IDS_SOME_VAR=value_结尾,值按空格分割(引号保留空格,双引号转义内部引号):
IDS_ARRAY_=first "second element" "third ""with quotes"""
IDS__HOSTNAME__PORT__VAR(主机名特殊字符替换为_,连字符替换为___),例如:
IDS__EXAMPLE_COM__80__SOME_VAR=value # example.com:80的SOME_VAR
配置访问(PHP)
php<?php use \SeanMorris\Ids\Settings; // 读取单个配置 $someVar = Settings::read('some', 'var'); // 对应IDS_SOME_VAR // 读取配置对象 $some = Settings::read('some'); echo $some->var; // 访问some.var // 读取数组配置 $array = Settings::read('ARRAY'); // 对应IDS_ARRAY_
秘密配置管理
.entropy文件中定义CONFIG_KEY:ENTROPY_KEY,启动时自动生成32位随机值.env文件YAML/JSON配置
config/[hostname]/settings.yml或config/[hostname;port]/settings.json_;80(匹配所有主机的80端口)、_(匹配所有主机)settings.defaults.yml或settings.defaults.json(提交版本控制)infra/compose/dev.yml:
yamlversion: '3' services: server: image: seanmorris/ids.server:latest-dev ports: - "2020:80" environment: - IDS_ENV=dev - IDS_EXPOSE_HTTP=2020 volumes: - ./:/app mysql: image: mysql:5.7 ports: - "3030:3306" environment: - MYSQL_ROOT_PASSWORD=${IDS_SQL_ROOT_PASSWORD} - MYSQL_DATABASE=${IDS_SQL_DATABASE}
bashmake @dev start-bg # 后台启动dev环境服务
bashdocker exec -it ids-project_server_1 bash # 进入server容器
SeanMorris/Ids框架通过Docker和PHP的深度整合,为Web应用开发提供了安全、高效且易用的解决方案。其多环境支持、灵活配置系统和丰富的开发工具,使得从开发到部署的全流程更加顺畅。无论是小型项目还是需要多环境管理的复杂应用,Ids都能提供有力的支持。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务