[{"data":1,"prerenderedAt":955},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fcloudflare-pages-deploy":3},{"doc":4,"prev":919,"next":926,"resolvedType":8,"readingMinutes":203,"audience":930,"checklist":934,"related":938},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fcloudflare-pages-deploy","Cloudflare Pages 部署指南","Cloudflare Pages 项目部署、自定义域名、环境变量、重定向与 Functions","article",null,"infra-deployment","服务器与部署","2026-02-28","i-carbon-cloud",{"type":15,"value":16,"toc":890},"minimark",[17,21,25,29,32,48,51,54,59,78,81,161,165,256,260,342,345,348,369,372,375,390,393,400,403,406,414,421,459,465,468,474,480,484,489,495,499,506,616,623,627,630,644,647,663,670,673,676,728,731,734,740,743,757,760,764,767,781,784,787,801,804,807,821,824,835,838,858,861,886],[18,19,6],"h1",{"id":20},"cloudflare-pages-部署指南",[22,23,24],"p",{},"这页适合作为“静态站点与前端项目上线入口”。Cloudflare Pages 的优势不只是部署快，而是 Git 集成、预览环境、边缘网络和自定义域名可以一套接起来。",[26,27,28],"h2",{"id":28},"适合什么项目",[22,30,31],{},"更适合放到 Pages 的场景：",[33,34,35,39,42,45],"ul",{},[36,37,38],"li",{},"Nuxt、Vite、Astro 这类前端或静态站点",[36,40,41],{},"文档站、博客、导航站、营销页",[36,43,44],{},"需要 PR 预览链接的前端项目",[36,46,47],{},"想把静态资源和简单边缘函数一起托管",[22,49,50],{},"如果项目主要是复杂服务端逻辑、长连接、大量后台任务，更适合把 Pages 和 Workers \u002F 其他后端服务拆开部署。",[26,52,53],{"id":53},"创建项目",[55,56,58],"h3",{"id":57},"通过-git-连接","通过 Git 连接",[60,61,62,72,75],"ol",{},[36,63,64,65],{},"登录 ",[66,67,71],"a",{"href":68,"rel":69},"https:\u002F\u002Fdash.cloudflare.com\u002F",[70],"nofollow","Cloudflare Dashboard",[36,73,74],{},"Workers & Pages → Create → Pages → Connect to Git",[36,76,77],{},"选择仓库，配置构建设置",[55,79,80],{"id":80},"构建配置",[82,83,84,100],"table",{},[85,86,87],"thead",{},[88,89,90,94,97],"tr",{},[91,92,93],"th",{},"框架",[91,95,96],{},"构建命令",[91,98,99],{},"输出目录",[101,102,103,120,135,148],"tbody",{},[88,104,105,109,115],{},[106,107,108],"td",{},"Nuxt",[106,110,111],{},[112,113,114],"code",{},"npx nuxi build",[106,116,117],{},[112,118,119],{},"dist",[88,121,122,125,130],{},[106,123,124],{},"Next.js",[106,126,127],{},[112,128,129],{},"npm run build",[106,131,132],{},[112,133,134],{},".next",[88,136,137,140,144],{},[106,138,139],{},"Vite",[106,141,142],{},[112,143,129],{},[106,145,146],{},[112,147,119],{},[88,149,150,153,157],{},[106,151,152],{},"Astro",[106,154,155],{},[112,156,129],{},[106,158,159],{},[112,160,119],{},[55,162,164],{"id":163},"wrangler-cli-部署","Wrangler CLI 部署",[166,167,172],"pre",{"className":168,"code":169,"language":170,"meta":171,"style":171},"language-bash shiki shiki-themes github-light github-dark","# 安装\npnpm add -D wrangler\n\n# 登录\nnpx wrangler login\n\n# 部署\nnpx wrangler pages deploy dist --project-name=my-project\n","bash","",[112,173,174,183,201,208,214,226,231,237],{"__ignoreMap":171},[175,176,179],"span",{"class":177,"line":178},"line",1,[175,180,182],{"class":181},"sJ8bj","# 安装\n",[175,184,186,190,194,198],{"class":177,"line":185},2,[175,187,189],{"class":188},"sScJk","pnpm",[175,191,193],{"class":192},"sZZnC"," add",[175,195,197],{"class":196},"sj4cs"," -D",[175,199,200],{"class":192}," wrangler\n",[175,202,204],{"class":177,"line":203},3,[175,205,207],{"emptyLinePlaceholder":206},true,"\n",[175,209,211],{"class":177,"line":210},4,[175,212,213],{"class":181},"# 登录\n",[175,215,217,220,223],{"class":177,"line":216},5,[175,218,219],{"class":188},"npx",[175,221,222],{"class":192}," wrangler",[175,224,225],{"class":192}," login\n",[175,227,229],{"class":177,"line":228},6,[175,230,207],{"emptyLinePlaceholder":206},[175,232,234],{"class":177,"line":233},7,[175,235,236],{"class":181},"# 部署\n",[175,238,240,242,244,247,250,253],{"class":177,"line":239},8,[175,241,219],{"class":188},[175,243,222],{"class":192},[175,245,246],{"class":192}," pages",[175,248,249],{"class":192}," deploy",[175,251,252],{"class":192}," dist",[175,254,255],{"class":196}," --project-name=my-project\n",[26,257,259],{"id":258},"wranglerjsonc-配置","wrangler.jsonc 配置",[166,261,265],{"className":262,"code":263,"language":264,"meta":171,"style":171},"language-jsonc shiki shiki-themes github-light github-dark","{\n  \"$schema\": \"node_modules\u002Fwrangler\u002Fconfig-schema.json\",\n  \"name\": \"my-project\",\n  \"pages_build_output_dir\": \"dist\",\n  \"compatibility_date\": \"2025-07-15\",\n  \"compatibility_flags\": [\"nodejs_compat\"],\n}\n","jsonc",[112,266,267,273,287,299,311,323,337],{"__ignoreMap":171},[175,268,269],{"class":177,"line":178},[175,270,272],{"class":271},"sVt8B","{\n",[175,274,275,278,281,284],{"class":177,"line":185},[175,276,277],{"class":196},"  \"$schema\"",[175,279,280],{"class":271},": ",[175,282,283],{"class":192},"\"node_modules\u002Fwrangler\u002Fconfig-schema.json\"",[175,285,286],{"class":271},",\n",[175,288,289,292,294,297],{"class":177,"line":203},[175,290,291],{"class":196},"  \"name\"",[175,293,280],{"class":271},[175,295,296],{"class":192},"\"my-project\"",[175,298,286],{"class":271},[175,300,301,304,306,309],{"class":177,"line":210},[175,302,303],{"class":196},"  \"pages_build_output_dir\"",[175,305,280],{"class":271},[175,307,308],{"class":192},"\"dist\"",[175,310,286],{"class":271},[175,312,313,316,318,321],{"class":177,"line":216},[175,314,315],{"class":196},"  \"compatibility_date\"",[175,317,280],{"class":271},[175,319,320],{"class":192},"\"2025-07-15\"",[175,322,286],{"class":271},[175,324,325,328,331,334],{"class":177,"line":228},[175,326,327],{"class":196},"  \"compatibility_flags\"",[175,329,330],{"class":271},": [",[175,332,333],{"class":192},"\"nodejs_compat\"",[175,335,336],{"class":271},"],\n",[175,338,339],{"class":177,"line":233},[175,340,341],{"class":271},"}\n",[26,343,344],{"id":344},"推荐发布顺序",[22,346,347],{},"比较稳的部署顺序通常是：",[60,349,350,353,360,363,366],{},[36,351,352],{},"先在本地把构建命令跑通",[36,354,355,356,359],{},"再确认输出目录和 ",[112,357,358],{},"wrangler"," 配置一致",[36,361,362],{},"再接 Git 自动部署",[36,364,365],{},"再配置环境变量、域名和缓存头",[36,367,368],{},"最后才补 Functions、D1、KV、R2 等边缘能力",[22,370,371],{},"先让“纯静态构建可稳定上线”，后面扩功能会轻松很多。",[26,373,374],{"id":374},"自定义域名",[60,376,377,380,387],{},[36,378,379],{},"Pages 项目 → Custom domains → Set up a custom domain",[36,381,382,383,386],{},"输入域名（如 ",[112,384,385],{},"example.com","）",[36,388,389],{},"Cloudflare 自动配置 DNS 和 SSL",[55,391,392],{"id":392},"多域名",[22,394,395,396,399],{},"可以绑定多个域名，包括 ",[112,397,398],{},"www"," 和裸域。",[26,401,402],{"id":402},"环境变量",[22,404,405],{},"Dashboard → Pages 项目 → Settings → Environment variables",[166,407,412],{"className":408,"code":410,"language":411},[409],"language-text","# 生产环境\nNODE_VERSION=22\nNUXT_PUBLIC_SITE_URL=https:\u002F\u002Fexample.com\n\n# 预览环境（可单独配置）\nNUXT_PUBLIC_SITE_URL=https:\u002F\u002Fpreview.example.com\n","text",[112,413,410],{"__ignoreMap":171},[22,415,416,417,420],{},"也可以在 ",[112,418,419],{},"wrangler.jsonc"," 中配置：",[166,422,424],{"className":262,"code":423,"language":264,"meta":171,"style":171},"{\n  \"vars\": {\n    \"ENVIRONMENT\": \"production\",\n  },\n}\n",[112,425,426,430,438,450,455],{"__ignoreMap":171},[175,427,428],{"class":177,"line":178},[175,429,272],{"class":271},[175,431,432,435],{"class":177,"line":185},[175,433,434],{"class":196},"  \"vars\"",[175,436,437],{"class":271},": {\n",[175,439,440,443,445,448],{"class":177,"line":203},[175,441,442],{"class":196},"    \"ENVIRONMENT\"",[175,444,280],{"class":271},[175,446,447],{"class":192},"\"production\"",[175,449,286],{"class":271},[175,451,452],{"class":177,"line":210},[175,453,454],{"class":271},"  },\n",[175,456,457],{"class":177,"line":216},[175,458,341],{"class":271},[460,461,462],"blockquote",{},[22,463,464],{},"预览环境和生产环境建议分开配置，特别是 API 地址、鉴权回调域名、第三方统计和实验性开关。",[26,466,467],{"id":467},"重定向",[22,469,470,473],{},[112,471,472],{},"public\u002F_redirects","：",[166,475,478],{"className":476,"code":477,"language":411},[409],"\u002Fold-page  \u002Fnew-page  301\n\u002Fblog\u002F*    \u002Fdocs\u002F:splat  301\n\u002Fgithub    https:\u002F\u002Fgithub.com\u002Fuser  302\n",[112,479,477],{"__ignoreMap":171},[26,481,483],{"id":482},"headers","Headers",[22,485,486,473],{},[112,487,488],{},"public\u002F_headers",[166,490,493],{"className":491,"code":492,"language":411},[409],"\u002F*\n  X-Frame-Options: DENY\n  X-Content-Type-Options: nosniff\n  Referrer-Policy: strict-origin-when-cross-origin\n\n\u002Fassets\u002F*\n  Cache-Control: public, max-age=31536000, immutable\n",[112,494,492],{"__ignoreMap":171},[26,496,498],{"id":497},"pages-functions","Pages Functions",[22,500,501,502,505],{},"在 ",[112,503,504],{},"functions\u002F"," 目录下创建 API 端点：",[166,507,511],{"className":508,"code":509,"language":510,"meta":171,"style":171},"language-typescript shiki shiki-themes github-light github-dark","\u002F\u002F functions\u002Fapi\u002Fhello.ts\nexport const onRequestGet: PagesFunction = async (context) => {\n  return new Response(JSON.stringify({ message: \"Hello\" }), {\n    headers: { \"Content-Type\": \"application\u002Fjson\" },\n  });\n};\n","typescript",[112,512,513,518,558,590,606,611],{"__ignoreMap":171},[175,514,515],{"class":177,"line":178},[175,516,517],{"class":181},"\u002F\u002F functions\u002Fapi\u002Fhello.ts\n",[175,519,520,524,527,530,533,536,539,542,545,549,552,555],{"class":177,"line":185},[175,521,523],{"class":522},"szBVR","export",[175,525,526],{"class":522}," const",[175,528,529],{"class":188}," onRequestGet",[175,531,532],{"class":522},":",[175,534,535],{"class":188}," PagesFunction",[175,537,538],{"class":522}," =",[175,540,541],{"class":522}," async",[175,543,544],{"class":271}," (",[175,546,548],{"class":547},"s4XuR","context",[175,550,551],{"class":271},") ",[175,553,554],{"class":522},"=>",[175,556,557],{"class":271}," {\n",[175,559,560,563,566,569,572,575,578,581,584,587],{"class":177,"line":203},[175,561,562],{"class":522},"  return",[175,564,565],{"class":522}," new",[175,567,568],{"class":188}," Response",[175,570,571],{"class":271},"(",[175,573,574],{"class":196},"JSON",[175,576,577],{"class":271},".",[175,579,580],{"class":188},"stringify",[175,582,583],{"class":271},"({ message: ",[175,585,586],{"class":192},"\"Hello\"",[175,588,589],{"class":271}," }), {\n",[175,591,592,595,598,600,603],{"class":177,"line":210},[175,593,594],{"class":271},"    headers: { ",[175,596,597],{"class":192},"\"Content-Type\"",[175,599,280],{"class":271},[175,601,602],{"class":192},"\"application\u002Fjson\"",[175,604,605],{"class":271}," },\n",[175,607,608],{"class":177,"line":216},[175,609,610],{"class":271},"  });\n",[175,612,613],{"class":177,"line":228},[175,614,615],{"class":271},"};\n",[22,617,618,619,622],{},"访问 ",[112,620,621],{},"\u002Fapi\u002Fhello"," 即可调用。",[26,624,626],{"id":625},"当前项目这类-nuxt-站点的注意点","当前项目这类 Nuxt 站点的注意点",[22,628,629],{},"Nuxt \u002F Nitro 项目接入 Pages 时，最容易出问题的通常是：",[33,631,632,635,638,641],{},[36,633,634],{},"输出目录写错",[36,636,637],{},"本地和云端使用了不同包管理器或锁文件",[36,639,640],{},"Node 版本与依赖树不匹配",[36,642,643],{},"环境变量只配了本地，没有配 Preview \u002F Production",[22,645,646],{},"部署前建议至少本地确认一次：",[166,648,650],{"className":168,"code":649,"language":170,"meta":171,"style":171},"bun run build\n",[112,651,652],{"__ignoreMap":171},[175,653,654,657,660],{"class":177,"line":178},[175,655,656],{"class":188},"bun",[175,658,659],{"class":192}," run",[175,661,662],{"class":192}," build\n",[22,664,665,666,669],{},"如果云端构建环境实际使用 ",[112,667,668],{},"npm install","，就要特别注意依赖版本是否能被 npm 正常解析。",[26,671,672],{"id":672},"构建缓存",[22,674,675],{},"Cloudflare Pages 支持构建缓存加速：",[166,677,679],{"className":168,"code":678,"language":170,"meta":171,"style":171},"# package.json\n{\n  \"scripts\": {\n    \"build\": \"nuxi build\",\n    \"deploy\": \"wrangler pages deploy dist\"\n  }\n}\n",[112,680,681,686,690,699,709,719,724],{"__ignoreMap":171},[175,682,683],{"class":177,"line":178},[175,684,685],{"class":181},"# package.json\n",[175,687,688],{"class":177,"line":185},[175,689,272],{"class":271},[175,691,692,695,697],{"class":177,"line":203},[175,693,694],{"class":188},"  \"scripts\"",[175,696,532],{"class":196},[175,698,557],{"class":192},[175,700,701,704,706],{"class":177,"line":210},[175,702,703],{"class":188},"    \"build\"",[175,705,532],{"class":196},[175,707,708],{"class":192}," \"nuxi build\",\n",[175,710,711,714,716],{"class":177,"line":216},[175,712,713],{"class":188},"    \"deploy\"",[175,715,532],{"class":196},[175,717,718],{"class":192}," \"wrangler pages deploy dist\"\n",[175,720,721],{"class":177,"line":228},[175,722,723],{"class":271},"  }\n",[175,725,726],{"class":177,"line":233},[175,727,341],{"class":271},[26,729,730],{"id":730},"预览部署",[22,732,733],{},"每个 PR \u002F 非主分支推送都会生成预览 URL：",[166,735,738],{"className":736,"code":737,"language":411},[409],"https:\u002F\u002F\u003Ccommit-hash>.my-project.pages.dev\n",[112,739,737],{"__ignoreMap":171},[26,741,742],{"id":742},"限制",[33,744,745,748,751,754],{},[36,746,747],{},"单次部署最大 25,000 个文件",[36,749,750],{},"单个文件最大 25 MB",[36,752,753],{},"每月免费 500 次构建",[36,755,756],{},"Functions 免费版每天 100,000 次请求",[26,758,759],{"id":759},"常见问题",[55,761,763],{"id":762},"本地能构建pages-上构建失败","本地能构建，Pages 上构建失败",[22,765,766],{},"优先排查：",[33,768,769,772,775,778],{},[36,770,771],{},"Node 版本是否一致",[36,773,774],{},"构建命令和输出目录是否配置正确",[36,776,777],{},"锁文件是否和包管理器匹配",[36,779,780],{},"是否存在 peer dependency 冲突",[55,782,783],{"id":783},"部署成功但页面空白",[22,785,786],{},"这通常与静态资源路径、SPA 回退、环境变量或客户端运行时报错有关。优先检查：",[33,788,789,792,795],{},[36,790,791],{},"浏览器控制台",[36,793,794],{},"资源请求是否 404",[36,796,797,800],{},[112,798,799],{},"_redirects"," 是否缺少 SPA fallback",[55,802,803],{"id":803},"自定义域名迟迟不生效",[22,805,806],{},"先检查：",[33,808,809,812,815,818],{},[36,810,811],{},"域名是否已接入 Cloudflare",[36,813,814],{},"DNS 是否已正确解析",[36,816,817],{},"是否给了足够传播时间",[36,819,820],{},"SSL 状态是否还在签发中",[26,822,823],{"id":823},"风险提醒",[33,825,826,829,832],{},[36,827,828],{},"Preview 和 Production 的变量不要混用",[36,830,831],{},"不要把私密密钥直接放进前端公开变量",[36,833,834],{},"重定向和缓存头上线前最好先用预览域名验证一遍",[26,836,837],{"id":837},"延伸阅读",[33,839,840,846,852],{},[36,841,842],{},[66,843,845],{"href":844},"\u002Fdocs\u002Fcloudflare-workers","Cloudflare Workers 与 Pages",[36,847,848],{},[66,849,851],{"href":850},"\u002Fdocs\u002Fci-cd-guide","CI\u002FCD 指南",[36,853,854],{},[66,855,857],{"href":856},"\u002Fdocs\u002Fnginx-config","Nginx 配置指南",[26,859,860],{"id":860},"参考链接",[33,862,863,871,879],{},[36,864,865,870],{},[66,866,869],{"href":867,"rel":868},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fpages\u002F",[70],"Cloudflare Pages 文档"," — 官方文档",[36,872,873,878],{},[66,874,877],{"href":875,"rel":876},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fwrangler\u002F",[70],"Wrangler CLI"," — CLI 工具",[36,880,881,885],{},[66,882,498],{"href":883,"rel":884},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fpages\u002Ffunctions\u002F",[70]," — 无服务器函数",[887,888,889],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":171,"searchDepth":185,"depth":185,"links":891},[892,893,898,899,900,903,904,905,906,907,908,909,910,911,916,917,918],{"id":28,"depth":185,"text":28},{"id":53,"depth":185,"text":53,"children":894},[895,896,897],{"id":57,"depth":203,"text":58},{"id":80,"depth":203,"text":80},{"id":163,"depth":203,"text":164},{"id":258,"depth":185,"text":259},{"id":344,"depth":185,"text":344},{"id":374,"depth":185,"text":374,"children":901},[902],{"id":392,"depth":203,"text":392},{"id":402,"depth":185,"text":402},{"id":467,"depth":185,"text":467},{"id":482,"depth":185,"text":483},{"id":497,"depth":185,"text":498},{"id":625,"depth":185,"text":626},{"id":672,"depth":185,"text":672},{"id":730,"depth":185,"text":730},{"id":742,"depth":185,"text":742},{"id":759,"depth":185,"text":759,"children":912},[913,914,915],{"id":762,"depth":203,"text":763},{"id":783,"depth":203,"text":783},{"id":803,"depth":203,"text":803},{"id":823,"depth":185,"text":823},{"id":837,"depth":185,"text":837},{"id":860,"depth":185,"text":860},{"path":920,"title":921,"description":922,"docType":8,"resourceKind":9,"categoryId":923,"categoryLabel":924,"updatedAt":12,"publishedAt":12,"icon":925},"\u002Fdocs\u002Fbun-deno","Bun 与 Deno 运行时","Bun 和 Deno 的安装使用、与 Node.js 对比、包管理与实用命令","programming-languages","编程语言","i-carbon-application",{"path":927,"title":928,"description":929,"docType":8,"resourceKind":9,"categoryId":923,"categoryLabel":924,"updatedAt":12,"publishedAt":12,"icon":925},"\u002Fdocs\u002Fcss-tricks","CSS 实用技巧","现代 CSS 特性、布局技巧、动画、暗色模式与常用代码片段",[931,932,933],"希望把零散经验整理成长期可复用工作流的人","想先建立认知，再决定是否深入实践的人","希望阅读时顺手建立自己的操作清单或收藏体系的人",[935,936,937],"先浏览标题、摘要和目录，带着问题阅读会更高效","顺手记录真正对你有用的命令、链接和注意事项，避免重复搜索","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[939,943,948,952],{"path":940,"title":941,"description":942,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fs3-storage","S3 对象存储","S3 兼容存储使用、Cloudflare R2、MinIO 自建、rclone 同步与 SDK 集成",{"path":944,"title":945,"description":946,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":947,"publishedAt":947,"icon":13},"\u002Fdocs\u002Fmonitoring-logging","监控与日志","服务器监控工具、日志管理、Uptime 监控与告警配置","2026-02-27",{"path":949,"title":950,"description":951,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":947,"publishedAt":947,"icon":13},"\u002Fdocs\u002Fcontainer-orchestration","容器编排入门","Docker Swarm 与 Kubernetes 基础概念、常用命令与本地开发环境",{"path":850,"title":953,"description":954,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":947,"publishedAt":947,"icon":13},"CI\u002FCD 实践指南","持续集成与部署概念、GitHub Actions 进阶、自动化测试与部署策略",1776215712454]