[{"data":1,"prerenderedAt":685},["ShallowReactive",2],{"navigation_docs":3,"-docs-deploy-docker":209,"-docs-deploy-docker-surround":680},[4,24,51,73,99,116,162,175],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":16,"path":17,"stem":18},"Configuration","\u002Fdocs\u002Fgetting-started\u002Fconfiguration","docs\u002F1.getting-started\u002F3.configuration",{"title":20,"path":21,"stem":22},"Migration","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":50},"Collections","i-lucide-database","\u002Fdocs\u002Fcollections","docs\u002F2.collections",[30,34,38,42,46],{"title":31,"path":32,"stem":33},"Define","\u002Fdocs\u002Fcollections\u002Fdefine","docs\u002F2.collections\u002F1.define",{"title":35,"path":36,"stem":37},"Types","\u002Fdocs\u002Fcollections\u002Ftypes","docs\u002F2.collections\u002F2.types",{"title":39,"path":40,"stem":41},"Sources","\u002Fdocs\u002Fcollections\u002Fsources","docs\u002F2.collections\u002F3.sources",{"title":43,"path":44,"stem":45},"Validators","\u002Fdocs\u002Fcollections\u002Fvalidators","docs\u002F2.collections\u002F4.validators",{"title":47,"path":48,"stem":49},"Components","\u002Fdocs\u002Fcollections\u002Finherit-schema-from-component","docs\u002F2.collections\u002F5.inherit-schema-from-component",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Files","i-lucide-file","\u002Fdocs\u002Ffiles","docs\u002F3.files",[57,61,65,69],{"title":58,"path":59,"stem":60},"Markdown","\u002Fdocs\u002Ffiles\u002Fmarkdown","docs\u002F3.files\u002F1.markdown",{"title":62,"path":63,"stem":64},"YAML","\u002Fdocs\u002Ffiles\u002Fyaml","docs\u002F3.files\u002F2.yaml",{"title":66,"path":67,"stem":68},"JSON","\u002Fdocs\u002Ffiles\u002Fjson","docs\u002F3.files\u002F3.json",{"title":70,"path":71,"stem":72},"CSV","\u002Fdocs\u002Ffiles\u002Fcsv","docs\u002F3.files\u002F4.csv",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":50},"Query Utils","i-lucide-square-function","\u002Fdocs\u002Futils","docs\u002F4.utils",[79,83,87,91,95],{"title":80,"path":81,"stem":82},"queryCollection","\u002Fdocs\u002Futils\u002Fquery-collection","docs\u002F4.utils\u002F1.query-collection",{"title":84,"path":85,"stem":86},"queryCollectionNavigation","\u002Fdocs\u002Futils\u002Fquery-collection-navigation","docs\u002F4.utils\u002F2.query-collection-navigation",{"title":88,"path":89,"stem":90},"queryCollectionItemSurroundings","\u002Fdocs\u002Futils\u002Fquery-collection-item-surroundings","docs\u002F4.utils\u002F3.query-collection-item-surroundings",{"title":92,"path":93,"stem":94},"queryCollectionSearchSections","\u002Fdocs\u002Futils\u002Fquery-collection-search-sections","docs\u002F4.utils\u002F4.query-collection-search-sections",{"title":96,"path":97,"stem":98},"useSearchCollection","\u002Fdocs\u002Futils\u002Fuse-search-collection","docs\u002F4.utils\u002F5.use-search-collection",{"title":47,"icon":100,"path":101,"stem":102,"children":103,"page":50},"i-lucide-square-code","\u002Fdocs\u002Fcomponents","docs\u002F5.components",[104,108,112],{"title":105,"path":106,"stem":107},"ContentRenderer","\u002Fdocs\u002Fcomponents\u002Fcontent-renderer","docs\u002F5.components\u002F0.content-renderer",{"title":109,"path":110,"stem":111},"Slot","\u002Fdocs\u002Fcomponents\u002Fslot","docs\u002F5.components\u002F1.slot",{"title":113,"path":114,"stem":115},"Prose Components","\u002Fdocs\u002Fcomponents\u002Fprose","docs\u002F5.components\u002F2.prose",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":50},"Deploy","i-lucide-cloud-upload","\u002Fdocs\u002Fdeploy","docs\u002F6.deploy",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Server","\u002Fdocs\u002Fdeploy\u002Fserver","docs\u002F6.deploy\u002F1.server",{"title":127,"path":128,"stem":129},"Static","\u002Fdocs\u002Fdeploy\u002Fstatic","docs\u002F6.deploy\u002F10.static",{"title":131,"path":132,"stem":133},"Serverless","\u002Fdocs\u002Fdeploy\u002Fserverless","docs\u002F6.deploy\u002F2.serverless",{"title":135,"path":136,"stem":137},"NuxtHub","\u002Fdocs\u002Fdeploy\u002Fnuxthub","docs\u002F6.deploy\u002F3.nuxthub",{"title":139,"path":140,"stem":141},"Cloudflare Pages","\u002Fdocs\u002Fdeploy\u002Fcloudflare-pages","docs\u002F6.deploy\u002F4.cloudflare-pages",{"title":143,"path":144,"stem":145},"Cloudflare Workers","\u002Fdocs\u002Fdeploy\u002Fcloudflare-workers","docs\u002F6.deploy\u002F5.cloudflare-workers",{"title":147,"path":148,"stem":149},"Vercel","\u002Fdocs\u002Fdeploy\u002Fvercel","docs\u002F6.deploy\u002F6.vercel",{"title":151,"path":152,"stem":153},"Netlify","\u002Fdocs\u002Fdeploy\u002Fnetlify","docs\u002F6.deploy\u002F7.netlify",{"title":155,"path":156,"stem":157},"AWS Amplify","\u002Fdocs\u002Fdeploy\u002Faws-amplify","docs\u002F6.deploy\u002F8.aws-amplify",{"title":159,"path":160,"stem":161},"Docker","\u002Fdocs\u002Fdeploy\u002Fdocker","docs\u002F6.deploy\u002F9.docker",{"title":163,"icon":118,"path":164,"stem":165,"children":166,"page":50},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F7.integrations",[167,171],{"title":168,"path":169,"stem":170},"Nuxt i18n","\u002Fdocs\u002Fintegrations\u002Fi18n","docs\u002F7.integrations\u002F01.i18n",{"title":172,"path":173,"stem":174},"Nuxt LLMs","\u002Fdocs\u002Fintegrations\u002Fllms","docs\u002F7.integrations\u002F02.llms",{"title":176,"icon":177,"path":178,"stem":179,"children":180,"page":50},"Advanced","i-lucide-code-xml","\u002Fdocs\u002Fadvanced","docs\u002F8.advanced",[181,185,189,193,197,201,205],{"title":182,"path":183,"stem":184},"Full-Text Search","\u002Fdocs\u002Fadvanced\u002Ffulltext-search","docs\u002F8.advanced\u002F1.fulltext-search",{"title":186,"path":187,"stem":188},"Raw Content","\u002Fdocs\u002Fadvanced\u002Fraw-content","docs\u002F8.advanced\u002F2.raw-content",{"title":190,"path":191,"stem":192},"SQL Storage","\u002Fdocs\u002Fadvanced\u002Fdatabase","docs\u002F8.advanced\u002F3.database",{"title":194,"path":195,"stem":196},"Debugging tools","\u002Fdocs\u002Fadvanced\u002Ftools","docs\u002F8.advanced\u002F4.tools",{"title":198,"path":199,"stem":200},"Hooks","\u002Fdocs\u002Fadvanced\u002Fhooks","docs\u002F8.advanced\u002F5.hooks",{"title":202,"path":203,"stem":204},"Custom Source","\u002Fdocs\u002Fadvanced\u002Fcustom-source","docs\u002F8.advanced\u002F6.custom-source",{"title":206,"path":207,"stem":208},"Transformers","\u002Fdocs\u002Fadvanced\u002Ftransformers","docs\u002F8.advanced\u002F8.transformers",{"id":210,"title":159,"body":211,"description":674,"extension":675,"links":676,"meta":677,"navigation":251,"path":160,"seo":678,"stem":161,"__hash__":679},"docs\u002Fdocs\u002F6.deploy\u002F9.docker.md",{"type":212,"value":213,"toc":670},"minimark",[214,218,223,226,489,493,496,666],[215,216,217],"p",{},"Docker is a popular containerization platform that allows you to package your application with all its dependencies into a single container. This makes it easy to deploy your Content app on any platform that supports Docker.",[219,220,222],"h2",{"id":221},"with-nodejs-image","With Node.js image",[215,224,225],{},"Using Docker's Node.js image, you can deploy your Content app. All you need is to create a Dockerfile and build the image. Here is an example Dockerfile:",[227,228,234],"pre",{"className":229,"code":230,"filename":231,"language":232,"meta":233,"style":233},"language-docker shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Build Stage 1\n\nFROM node:22-alpine AS build\nWORKDIR \u002Fapp\n\nRUN corepack enable\n\n# Copy package.json and your lockfile, here we add pnpm-lock.yaml for illustration\nCOPY package.json pnpm-lock.yaml .npmrc .\u002F\n\n# Install dependencies\nRUN pnpm i\n\n# Copy the entire project\nCOPY . .\u002F\n\n# Build the project\nRUN pnpm run build\n\n# Build Stage 2\n\nFROM node:22-alpine\nWORKDIR \u002Fapp\n\n# Only `.output` folder is needed from the build stage\nCOPY --from=build \u002Fapp\u002F.output\u002F .\u002F\n\n# Change the port and host\nENV PORT=80\nENV HOST=0.0.0.0\n\nEXPOSE 80\n\nCMD [\"node\", \"\u002Fapp\u002Fserver\u002Findex.mjs\"]\n","Dockerfile","docker","",[235,236,237,246,253,270,279,284,293,298,304,313,318,324,332,337,343,351,356,362,370,375,381,386,394,401,406,412,420,425,431,440,448,453,462,467],"code",{"__ignoreMap":233},[238,239,242],"span",{"class":240,"line":241},"line",1,[238,243,245],{"class":244},"sHwdD","# Build Stage 1\n",[238,247,249],{"class":240,"line":248},2,[238,250,252],{"emptyLinePlaceholder":251},true,"\n",[238,254,256,260,264,267],{"class":240,"line":255},3,[238,257,259],{"class":258},"sbssI","FROM",[238,261,263],{"class":262},"sTEyZ"," node:22-alpine ",[238,265,266],{"class":258},"AS",[238,268,269],{"class":262}," build\n",[238,271,273,276],{"class":240,"line":272},4,[238,274,275],{"class":258},"WORKDIR",[238,277,278],{"class":262}," \u002Fapp\n",[238,280,282],{"class":240,"line":281},5,[238,283,252],{"emptyLinePlaceholder":251},[238,285,287,290],{"class":240,"line":286},6,[238,288,289],{"class":258},"RUN",[238,291,292],{"class":262}," corepack enable\n",[238,294,296],{"class":240,"line":295},7,[238,297,252],{"emptyLinePlaceholder":251},[238,299,301],{"class":240,"line":300},8,[238,302,303],{"class":244},"# Copy package.json and your lockfile, here we add pnpm-lock.yaml for illustration\n",[238,305,307,310],{"class":240,"line":306},9,[238,308,309],{"class":258},"COPY",[238,311,312],{"class":262}," package.json pnpm-lock.yaml .npmrc .\u002F\n",[238,314,316],{"class":240,"line":315},10,[238,317,252],{"emptyLinePlaceholder":251},[238,319,321],{"class":240,"line":320},11,[238,322,323],{"class":244},"# Install dependencies\n",[238,325,327,329],{"class":240,"line":326},12,[238,328,289],{"class":258},[238,330,331],{"class":262}," pnpm i\n",[238,333,335],{"class":240,"line":334},13,[238,336,252],{"emptyLinePlaceholder":251},[238,338,340],{"class":240,"line":339},14,[238,341,342],{"class":244},"# Copy the entire project\n",[238,344,346,348],{"class":240,"line":345},15,[238,347,309],{"class":258},[238,349,350],{"class":262}," . .\u002F\n",[238,352,354],{"class":240,"line":353},16,[238,355,252],{"emptyLinePlaceholder":251},[238,357,359],{"class":240,"line":358},17,[238,360,361],{"class":244},"# Build the project\n",[238,363,365,367],{"class":240,"line":364},18,[238,366,289],{"class":258},[238,368,369],{"class":262}," pnpm run build\n",[238,371,373],{"class":240,"line":372},19,[238,374,252],{"emptyLinePlaceholder":251},[238,376,378],{"class":240,"line":377},20,[238,379,380],{"class":244},"# Build Stage 2\n",[238,382,384],{"class":240,"line":383},21,[238,385,252],{"emptyLinePlaceholder":251},[238,387,389,391],{"class":240,"line":388},22,[238,390,259],{"class":258},[238,392,393],{"class":262}," node:22-alpine\n",[238,395,397,399],{"class":240,"line":396},23,[238,398,275],{"class":258},[238,400,278],{"class":262},[238,402,404],{"class":240,"line":403},24,[238,405,252],{"emptyLinePlaceholder":251},[238,407,409],{"class":240,"line":408},25,[238,410,411],{"class":244},"# Only `.output` folder is needed from the build stage\n",[238,413,415,417],{"class":240,"line":414},26,[238,416,309],{"class":258},[238,418,419],{"class":262}," --from=build \u002Fapp\u002F.output\u002F .\u002F\n",[238,421,423],{"class":240,"line":422},27,[238,424,252],{"emptyLinePlaceholder":251},[238,426,428],{"class":240,"line":427},28,[238,429,430],{"class":244},"# Change the port and host\n",[238,432,434,437],{"class":240,"line":433},29,[238,435,436],{"class":258},"ENV",[238,438,439],{"class":262}," PORT=80\n",[238,441,443,445],{"class":240,"line":442},30,[238,444,436],{"class":258},[238,446,447],{"class":262}," HOST=0.0.0.0\n",[238,449,451],{"class":240,"line":450},31,[238,452,252],{"emptyLinePlaceholder":251},[238,454,456,459],{"class":240,"line":455},32,[238,457,458],{"class":258},"EXPOSE",[238,460,461],{"class":262}," 80\n",[238,463,465],{"class":240,"line":464},33,[238,466,252],{"emptyLinePlaceholder":251},[238,468,470,473,476,480,483,486],{"class":240,"line":469},34,[238,471,472],{"class":258},"CMD",[238,474,475],{"class":262}," [",[238,477,479],{"class":478},"sfazB","\"node\"",[238,481,482],{"class":262},", ",[238,484,485],{"class":478},"\"\u002Fapp\u002Fserver\u002Findex.mjs\"",[238,487,488],{"class":262},"]\n",[219,490,492],{"id":491},"with-bun-image","With Bun image",[215,494,495],{},"If you like to use Bun, you can use the official Bun image. Here is an example Dockerfile:",[227,497,499],{"className":229,"code":498,"filename":231,"language":232,"meta":233,"style":233},"# use the official Bun image\n# see all versions at https:\u002F\u002Fhub.docker.com\u002Fr\u002Foven\u002Fbun\u002Ftags\nFROM oven\u002Fbun:1 AS build\nWORKDIR \u002Fapp\n\nCOPY package.json bun.lock* .\u002F\n\n# use ignore-scripts to avoid building node modules like better-sqlite3\nRUN bun install --frozen-lockfile --ignore-scripts\n\n# Copy the entire project\nCOPY . .\n\nRUN bun --bun run build\n\n# copy production dependencies and source code into final image\nFROM oven\u002Fbun:1 AS production\nWORKDIR \u002Fapp\n\n# Only `.output` folder is needed from the build stage\nCOPY --from=build \u002Fapp\u002F.output \u002Fapp\n\n# run the app\nEXPOSE 3000\u002Ftcp\nENTRYPOINT [ \"bun\", \"--bun\", \"run\", \"\u002Fapp\u002Fserver\u002Findex.mjs\" ]\n",[235,500,501,506,511,522,528,532,539,543,548,555,559,563,570,574,581,585,590,601,607,611,615,622,626,631,638],{"__ignoreMap":233},[238,502,503],{"class":240,"line":241},[238,504,505],{"class":244},"# use the official Bun image\n",[238,507,508],{"class":240,"line":248},[238,509,510],{"class":244},"# see all versions at https:\u002F\u002Fhub.docker.com\u002Fr\u002Foven\u002Fbun\u002Ftags\n",[238,512,513,515,518,520],{"class":240,"line":255},[238,514,259],{"class":258},[238,516,517],{"class":262}," oven\u002Fbun:1 ",[238,519,266],{"class":258},[238,521,269],{"class":262},[238,523,524,526],{"class":240,"line":272},[238,525,275],{"class":258},[238,527,278],{"class":262},[238,529,530],{"class":240,"line":281},[238,531,252],{"emptyLinePlaceholder":251},[238,533,534,536],{"class":240,"line":286},[238,535,309],{"class":258},[238,537,538],{"class":262}," package.json bun.lock* .\u002F\n",[238,540,541],{"class":240,"line":295},[238,542,252],{"emptyLinePlaceholder":251},[238,544,545],{"class":240,"line":300},[238,546,547],{"class":244},"# use ignore-scripts to avoid building node modules like better-sqlite3\n",[238,549,550,552],{"class":240,"line":306},[238,551,289],{"class":258},[238,553,554],{"class":262}," bun install --frozen-lockfile --ignore-scripts\n",[238,556,557],{"class":240,"line":315},[238,558,252],{"emptyLinePlaceholder":251},[238,560,561],{"class":240,"line":320},[238,562,342],{"class":244},[238,564,565,567],{"class":240,"line":326},[238,566,309],{"class":258},[238,568,569],{"class":262}," . .\n",[238,571,572],{"class":240,"line":334},[238,573,252],{"emptyLinePlaceholder":251},[238,575,576,578],{"class":240,"line":339},[238,577,289],{"class":258},[238,579,580],{"class":262}," bun --bun run build\n",[238,582,583],{"class":240,"line":345},[238,584,252],{"emptyLinePlaceholder":251},[238,586,587],{"class":240,"line":353},[238,588,589],{"class":244},"# copy production dependencies and source code into final image\n",[238,591,592,594,596,598],{"class":240,"line":358},[238,593,259],{"class":258},[238,595,517],{"class":262},[238,597,266],{"class":258},[238,599,600],{"class":262}," production\n",[238,602,603,605],{"class":240,"line":364},[238,604,275],{"class":258},[238,606,278],{"class":262},[238,608,609],{"class":240,"line":372},[238,610,252],{"emptyLinePlaceholder":251},[238,612,613],{"class":240,"line":377},[238,614,411],{"class":244},[238,616,617,619],{"class":240,"line":383},[238,618,309],{"class":258},[238,620,621],{"class":262}," --from=build \u002Fapp\u002F.output \u002Fapp\n",[238,623,624],{"class":240,"line":388},[238,625,252],{"emptyLinePlaceholder":251},[238,627,628],{"class":240,"line":396},[238,629,630],{"class":244},"# run the app\n",[238,632,633,635],{"class":240,"line":403},[238,634,458],{"class":258},[238,636,637],{"class":262}," 3000\u002Ftcp\n",[238,639,640,643,646,649,651,654,656,659,661,663],{"class":240,"line":408},[238,641,642],{"class":258},"ENTRYPOINT",[238,644,645],{"class":262}," [ ",[238,647,648],{"class":478},"\"bun\"",[238,650,482],{"class":262},[238,652,653],{"class":478},"\"--bun\"",[238,655,482],{"class":262},[238,657,658],{"class":478},"\"run\"",[238,660,482],{"class":262},[238,662,485],{"class":478},[238,664,665],{"class":262}," ]\n",[667,668,669],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}",{"title":233,"searchDepth":248,"depth":248,"links":671},[672,673],{"id":221,"depth":248,"text":222},{"id":491,"depth":248,"text":492},"Deploy your Content app with Docker","md",null,{},{"title":159,"description":674},"fs-b39cuHr_Umc7RGjI4rjSWIuJZr5mJVTSQ5FhIyZs",[681,683],{"title":155,"path":156,"stem":157,"description":682,"children":-1},"Deploy your Content app to AWS Amplify",{"title":168,"path":169,"stem":170,"description":684,"children":-1},"Learn how to create multi-language websites using Nuxt Content with the @nuxtjs\u002Fi18n module.",1778162906080]