阅读量:0
怎么会不过审呢?没有敏感信息呀。
For obvious reasons,Many Docker image repositories are inaccessible,The official warehouse has also been filtered by the firewall,So write about how to build a self use Docker image using CloudFlare's Workers and Pages.
其实已经有很多篇这样的教程了,但镜像搭建完基本就是所有人所有时间都能访问,这样就有两个问题:
- 第一是访问的人太多,流程太高,CF会封号。
- 第二是很多人都访问的话,域名容易被wall。
所以我写了个可以定时开放的脚本,这样就可以在规定的时间段内打开,或者只在自己想用的时候手动去打开。
下面是实现步骤:
1. 登录CF平台
2. 创建Worker
点击Workers 和 Pages -->创建
创建Worker
给Worker命名(随意起个英文名),点击【部署】
3. 部署代码
进入到部署成功页面后,再点击【编辑代码】
把如下代码粘贴进去
// Docker镜像仓库主机地址 let hub_host = 'registry-1.docker.io'; // Docker认证服务器地址 const auth_url = 'https://auth.docker.io'; // 自定义的工作服务器地址 let workers_url = 'https://docker.yourdomain.com'; let 屏蔽爬虫UA = ['netcraft']; // 根据主机名选择对应的上游地址 function routeByHosts(host) { // 定义路由表 const routes = { // 生产环境 "quay": "quay.io", "gcr": "gcr.io", "k8s-gcr": "k8s.gcr.io", "k8s": "registry.k8s.io", "ghcr": "ghcr.io", "cloudsmith": "docker.cloudsmith.io", // 测试环境 "test": "registry-1.docker.io", }; if (host in routes) return [routes[host], false]; else return [hub_host, true]; } /** @type {RequestInit} */ const PREFLIGHT_INIT = { // 预检请求配置 headers: new Headers({ 'access-control-allow-origin': '*', // 允许所有来源 'access-control-allow-methods': 'GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS', // 允许的HTTP方法 'access-control-max-age': '1728000', // 预检请求的缓存时间 }), }; /** * 构造响应 * @param {any} body 响应体 * @param {number} status 响应状态码 * @param {Object<string, string>} headers 响应头 */ function makeRes(body, status = 200, headers = {}) { headers['access-control-allow-origin'] = '*'; // 允许所有来源 return new Response(body, { status, headers }); // 返回新构造的响应 } /** * 构造新的URL对象 * @param {string} urlStr URL字符串 */ function newUrl(urlStr) { try { return new URL(urlStr); // 尝试构造新的URL对象 } catch (err) { return null; // 构造失败返回null } } function isUUID(uu