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