
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个使用类mustache替换从一个或多个模板生成docker-compose文件的工具。
composer require brettmc/docker-compose-generator
docker run --rm -it docker.xuanyuan.run/brettmc/docker-compose-generator --help
如果您需要维护多个略有不同、因环境而异的https://docs.docker.com/compose%E9%85%8D%E7%BD%AE%EF%BC%8C%E9%82%A3%E4%B9%88%E8%BF%99%E4%B8%AA%E5%B7%A5%E5%85%B7%E6%AD%A3%E6%98%AF%E6%82%A8%E6%89%80%E9%9C%80%E8%A6%81%E7%9A%84%E3%80%82
该工具已在生产环境中用于多个中型项目,通常按以下流程使用:
-e开关添加动态值,生成docker-compose配置docker stack deploy例如,开发分支的提交会构建并部署到开发swarm。每个开发部署都有自己的数据库,而测试和生产部署则没有。
合并多个yaml模板。例如,main.yml模板可以通过dev.yml添加额外服务进行扩展。这些模板会在后续操作前合并在一起。如果同时通过stdin和--input选项提供模板,stdin会先处理。通过--input提供的多个输入按顺序处理。
合并所有模板后,基于INI文件、环境变量和-e标志的值对结果执行变量替换。
接受来自INI风格环境文件或命令开关的变量,处理顺序如下:
.ini文件(如--ini global.ini --ini local.ini)按提供顺序处理,重复键会覆盖之前的;然后-e FOO=foo)main.yml
yamlversion: '3.4' networks: front: back: services: my-service: image: "docker.xuanyuan.run/my-service:{{TAG_OR_HASH}}" environment: BAR: "{{BAR}}"
dev.yml
yamlservices: my-service: ports: - "80:80" db: image: "docker.xuanyuan.run/postgres"
prod.yml
yamlservices: my-service: image: "docker.xuanyuan.run/my-service:{{TAG_OR_HASH}}"
prod.ini
iniDB_HOST=prod.db.example.com AUTH=prod.signon.example.com
dev.ini
iniAUTH=dev.signon.example.com
您可以编写自定义逻辑来确定在main.yml之后应用哪些文件,例如:
bash#!/bin/bash echo "为环境生成配置: ${CI_ENV} # 预定义变量,如来自CI/CD系统" case ${CI_ENV} in BUILD) HOST=docker-build-swarm-manager.example.com STACK=${CI_COMMIT_HASH} TAG_OR_HASH=${CI_COMMIT_HASH} BAR=something ;; PROD) HOST=docker-prod-swarm-manager.example.com STACK=prod TAG_OR_HASH=${CI_COMMIT_TAG} BAR=something-else ;; esac bin/console.php generate -e HASH=${CI_COMMIT_HASH} -e BAR=${BAR} --ini ${CI_ENV}.ini --input main.yml --input ${CI_ENV}.yml > docker-compose.yml docker -H ${HOST} stack deploy --prune --with-registry-auth -c docker-compose.yml ${STACK}
注意:如果通过管道输入,不要附加TTY(即不要使用docker的-t开关)
bash$ docker run --rm -i brettmc/docker-compose-generator generate -e FOO=foo -e BAR=bar < main.yml > output.yml
或
bash$ cat main.yml | docker run --rm -i brettmc/docker-compose-generator generate -e FOO=foo -e BAR=bar > output.yml
或使用卷挂载:
bash$ docker run --rm -v $(pwd)/conf:/srv/conf -v $(pwd)/template:/srv/template brettmc/docker-compose-generator generate --input /srv/template/main.yml --input /srv/template/dev.yml --ini /srv/conf/dev.ini -e DB_HOST=${HOST} > output.yml
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务