
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
BinderHub是一种基于云的多服务器技术,用于托管从代码仓库构建的可重现计算环境和交互式Jupyter Notebook。本Docker镜像包含一系列脚本,可在Microsoft Azure上自动部署BinderHub,并连接Docker Hub账户/组织或Azure容器注册表(ACR),帮助用户搭建自托管的Binder服务。
该镜像基于Google Cloud部署脚本集https://github.com/nicain/binder-deploy%E5%BC%80%E5%8F%91%EF%BC%8C%E9%80%82%E7%94%A8%E4%BA%8E%E9%9C%80%E8%A6%81%E5%9C%A8Azure%E5%B9%B3%E5%8F%B0%E4%B8%8A%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2BinderHub%E7%9A%84%E4%B8%AA%E4%BA%BA%E6%88%96%E7%BB%84%E7%BB%87%E3%80%82%E4%BD%BF%E7%94%A8%E5%89%8D%E9%9C%80%E6%8B%A5%E6%9C%89Microsoft Azure账户和订阅(可通过Azure免费试用获取)。
克隆仓库并准备配置文件
bashgit clone https://github.com/alan-turing-institute/binderhub-deploy.git cd binderhub-deploy cp template-config.json config.json
配置文件格式
config.json是核心配置文件,包含部署所需的所有参数,格式如下:
json{ "container_registry": "", // 容器注册表类型:"dockerhub"或"azurecr" "enable_https": "false", // 是否启用HTTPS:"true"或"false" "acr": { "registry_name": null, // ACR名称(仅azurecr时必填,需唯一且字母数字组成) "sku": "Basic" // ACR SKU层级(Basic/Standard/Premium) }, "azure": { "subscription": "", // Azure订阅名称或ID "res_grp_name": "", // Azure资源组名称 "location": "", // Azure数据中心区域(如"westeurope") "node_count": 1, // 节点数量(建议3个以保证稳定性) "vm_size": "Standard_D2s_v3", // 虚拟机类型(如"Standard_D2s_v3") "sp_app_id": null, // Azure服务主体ID(可选) "sp_app_key": null, // Azure服务主体密码(可选) "sp_tenant_id": null, // Azure租户ID(可选) "log_to_blob_storage": false // 是否将日志存储到Blob(非容器运行时) }, "binderhub": { "name": "", // BinderHub名称 "version": "", // Helm Chart版本(格式:0.2.0-<commit-hash>) "image_prefix": "" // Docker镜像前缀(如"binder-prod") }, "docker": { "username": null, // Docker用户名(可在运行时提供) "password": null, // Docker密码(可在运行时提供) "org": null // Docker Hub组织(可选) }, "https": { "certmanager_version": null, // cert-manager版本 "contact_email": null, // Let's Encrypt联系邮箱 "domain_name": null, // 域名 "nginx_version": null // nginx-ingress版本 } }
注意:免费试用订阅有4核限制,需根据
vm_size(单节点核心数)和node_count(节点数)合理配置。
setup.sh - 环境准备
检查并安装必要的命令行工具:Azure CLI、Kubernetes(kubectl)、Helm。
bashcd src chmod 700 setup.sh ./setup.sh
deploy.sh - 部署BinderHub
读取config.json配置,部署Kubernetes集群,创建配置文件并安装BinderHub。
bashchmod 700 deploy.sh ./deploy.sh
如使用Docker Hub且未在配置文件中提供凭据,脚本会提示输入Docker用户名和密码。
logs.sh - 查看日志
打印JupyterHub日志以辅助调试:
bashchmod 700 logs.sh ./logs.sh
info.sh - 获取部署信息
显示Kubernetes pod状态和BinderHub/JupyterHub IP地址:
bashchmod 700 info.sh ./info.sh
upgrade.sh - 升级部署
升级Helm Chart配置并重启相关pod:
bashchmod 700 upgrade.sh ./upgrade.sh
teardown.sh - 销毁部署
删除Helm发布、Kubernetes命名空间和Azure资源组:
bashchmod 700 teardown.sh ./teardown.sh
通过Azure门户一键部署:
服务主体创建
部署前需创建Azure服务主体(Service Principal):
az account set --subscription <订阅ID>bash# 用于Docker Hub az ad sp create-for-rbac --name binderhub-sp --role Contributor --scope /subscriptions/<订阅ID> # 用于ACR(需Owner权限) az ad sp create-for-rbac --name binderhub-sp --role Owner --scope /subscriptions/<订阅ID>
appId(服务主体ID)、password(服务主体密钥)和tenant(租户ID),用于部署表单填写监控部署进度
获取部署输出
部署完成后,日志和配置文件会存储在Azure存储账户中,可通过Azure CLI下载:
bash# 下载所有文件 az storage blob download-batch --account-name <存储账户名> --source <容器名> --pattern "*" --destination <本地目录> # 下载特定日志文件 az storage blob download-batch --account-name <存储账户名> --source <容器名> --pattern "*.log" --destination <本地目录>
如需为自定义域名启用HTTPS,需完成以下手动步骤:
name-servers.log)set-a-records.sh将负载均衡器IP绑定到域名的A记录:
bashchmod 700 set-a-records.sh ./set-a-records.sh
可通过修改模板文件(templates目录)自定义BinderHub配置,包括资源限制、认证方式、UI样式等。修改后需重新运行deploy.sh应用更改。
bashdocker build -t binderhub-setup:test .
遵循语义化版本规范,使用Git标签标记发布版本:
bashgit tag -a v1.0.0 -m "Initial stable release" git push origin v1.0.0
config.json包含敏感信息,已被git忽略,请勿提交到版本库您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务