
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
lakeFS-hooks Docker镜像提供了一组简单的lakeFS Webhook,用于数据对象的预提交和预合并验证。通过设置这些规则,基于lakeFS的数据湖可以确保生产分支始终只包含有效、高质量的数据,同时允许在隔离分支上使用未测试版本进行实验。
该项目包含以下基本构建块,便于构建自定义lakeFS预合并/预提交钩子:
文件格式验证器
检查新文件是否属于允许的数据格式集合,可限定特定前缀。
示例:作为lakeFS预合并钩子
yaml--- name: ParquetOnlyInProduction description: 此Webhook确保仅Parquet文件可写入production/目录下 on: pre-merge: branches: - master hooks: - id: production_format_validator type: webhook description: 验证文件格式 properties: url: "http://<host:port>/webhooks/format" query_params: allow: ["parquet", "delta_lake"] prefix: production/
基本文件模式验证器
读取新的Parquet和ORC文件,确保它们不包含列名黑名单(或名称前缀),有助于避免意外的PII暴露。
示例:作为lakeFS预合并钩子
yaml--- name: NoUserColumnsUnderPub description: >- 此Webhook确保包含以"user_"开头的列的文件 不能写入public/目录下 on: pre-merge: branches: - master hooks: - id: pub_prevent_user_columns type: webhook description: 确保public/下无user_*列 properties: url: "http://<host:port>/webhooks/schema" query_params: disallow: ["user_", "private_"] prefix: public/
分区脏检查器
确保分区(或目录)完全不可变,仅允许以下情况写入目录:
如果添加或替换了文件但保留了部分先前内容,则视为"脏"分区并阻止提交(忽略空文件)。
示例:作为lakeFS预提交钩子
yaml--- name: NoDirtyPartitionsInProduction description: 检查tables/hive/下所有分区保持不可变 on: pre-commit: branches: - "*" hooks: - id: hive_ensure_immutable type: webhook description: 检查所有Hive分区是否完全写入或完全替换 properties: url: "http://<host:port>/webhooks/dirty_check" query_params: prefix: tables/hive/
提交元数据验证器
确保生产环境中的提交包含足够的元数据,以支持数据血缘和可追溯性。
示例:作为lakeFS预提交钩子
yaml--- name: EnsureProductionCommitMetadata description: >- 检查写入production/的提交包含一组必填元数据字段, 这些字段不能为空。 on: pre-commit: branches: - "*" hooks: - id: production_ensure_commit_metadata type: webhook description: 检查所有写入production/的提交是否包含必填元数据字段 properties: url: "http://<host:port>/webhooks/commit_metadata" query_params: prefix: production/ fields: [airflow_dag_run_url, job_git_commit, update_sla, sources]
适用于基于lakeFS构建的数据湖,需要对数据变更进行严格质量控制和合规检查的场景。
sh# 克隆仓库 git clone https://github.com/treeverse/lakeFS-hooks.git cd lakeFS-hooks/ # 构建镜像 docker build -t lakefs-hooks:latest . # (可选)标记并推送到镜像仓库
sh# 安装依赖 pip install -r requirements.txt # 设置环境变量 export LAKEFS_SERVER_ADDRESS="http://lakefs.example.com" export LAKEFS_ACCESS_KEY_ID="<lakeFS用户的访问密钥ID>" export LAKEFS_SECRET_ACCESS_KEY="<对应密钥ID的秘密访问密钥>" # 启动Flask服务器 flask run
测试Webhook:使用curl发送示例预合并事件
shcurl -v -XPOST -H 'Content-Type: application/json' \ -d'{ "event_type": "pre-merge", "event_time": "2021-02-17T11:04:18Z", "action_name": "test action", "hook_id": "hook_id", "repository_id": "my-lakefs-repository", "branch_id": "main", "source_ref": "220158b4b316e536e024aaaaf76b2377a6c71dfd6b974ca3a49354a9bdd0dbc3", "commit_message": "a commit message", "committer": "user1" }' 'http://localhost:5000/webhooks/schema'
shelldocker run \ -e LAKEFS_SERVER_ADDRESS='http://lakefs.example.com' \ -e LAKEFS_ACCESS_KEY_ID='<lakeFS用户的访问密钥ID>' \ -e LAKEFS_SECRET_ACCESS_KEY='<对应密钥ID的秘密访问密钥>' \ -p 5000:5000 \ lakefs-hooks
| 环境变量名 | 描述 | 必需 |
|---|---|---|
| LAKEFS_SERVER_ADDRESS | lakeFS服务器地址(如[***] | 是 |
| LAKEFS_ACCESS_KEY_ID | lakeFS用户的访问密钥ID | 是 |
| LAKEFS_SECRET_ACCESS_KEY | 对应访问密钥ID的秘密访问密钥 | 是 |
lakeFS-hooks基于Apache 2.0许可证开源。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务