[{"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","/docs/getting-started","docs/1.getting-started/1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation",{"title":16,"path":17,"stem":18},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/3.configuration",{"title":20,"path":21,"stem":22},"Migration","/docs/getting-started/migration","docs/1.getting-started/4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":50},"Collections","i-lucide-database","/docs/collections","docs/2.collections",[30,34,38,42,46],{"title":31,"path":32,"stem":33},"Define","/docs/collections/define","docs/2.collections/1.define",{"title":35,"path":36,"stem":37},"Types","/docs/collections/types","docs/2.collections/2.types",{"title":39,"path":40,"stem":41},"Sources","/docs/collections/sources","docs/2.collections/3.sources",{"title":43,"path":44,"stem":45},"Validators","/docs/collections/validators","docs/2.collections/4.validators",{"title":47,"path":48,"stem":49},"Components","/docs/collections/inherit-schema-from-component","docs/2.collections/5.inherit-schema-from-component",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Files","i-lucide-file","/docs/files","docs/3.files",[57,61,65,69],{"title":58,"path":59,"stem":60},"Markdown","/docs/files/markdown","docs/3.files/1.markdown",{"title":62,"path":63,"stem":64},"YAML","/docs/files/yaml","docs/3.files/2.yaml",{"title":66,"path":67,"stem":68},"JSON","/docs/files/json","docs/3.files/3.json",{"title":70,"path":71,"stem":72},"CSV","/docs/files/csv","docs/3.files/4.csv",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":50},"Query Utils","i-lucide-square-function","/docs/utils","docs/4.utils",[79,83,87,91],{"title":80,"path":81,"stem":82},"queryCollection","/docs/utils/query-collection","docs/4.utils/1.query-collection",{"title":84,"path":85,"stem":86},"queryCollectionNavigation","/docs/utils/query-collection-navigation","docs/4.utils/2.query-collection-navigation",{"title":88,"path":89,"stem":90},"queryCollectionItemSurroundings","/docs/utils/query-collection-item-surroundings","docs/4.utils/3.query-collection-item-surroundings",{"title":92,"path":93,"stem":94},"queryCollectionSearchSections","/docs/utils/query-collection-search-sections","docs/4.utils/4.query-collection-search-sections",{"title":47,"icon":96,"path":97,"stem":98,"children":99,"page":50},"i-lucide-square-code","/docs/components","docs/5.components",[100,104,108],{"title":101,"path":102,"stem":103},"ContentRenderer","/docs/components/content-renderer","docs/5.components/0.content-renderer",{"title":105,"path":106,"stem":107},"Slot","/docs/components/slot","docs/5.components/1.slot",{"title":109,"path":110,"stem":111},"Prose Components","/docs/components/prose","docs/5.components/2.prose",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":50},"Deploy","i-lucide-cloud-upload","/docs/deploy","docs/6.deploy",[118,122,126,130,134,138,142,146,150,154],{"title":119,"path":120,"stem":121},"Server","/docs/deploy/server","docs/6.deploy/1.server",{"title":123,"path":124,"stem":125},"Static","/docs/deploy/static","docs/6.deploy/10.static",{"title":127,"path":128,"stem":129},"Serverless","/docs/deploy/serverless","docs/6.deploy/2.serverless",{"title":131,"path":132,"stem":133},"NuxtHub","/docs/deploy/nuxthub","docs/6.deploy/3.nuxthub",{"title":135,"path":136,"stem":137},"Cloudflare Pages","/docs/deploy/cloudflare-pages","docs/6.deploy/4.cloudflare-pages",{"title":139,"path":140,"stem":141},"Cloudflare Workers","/docs/deploy/cloudflare-workers","docs/6.deploy/5.cloudflare-workers",{"title":143,"path":144,"stem":145},"Vercel","/docs/deploy/vercel","docs/6.deploy/6.vercel",{"title":147,"path":148,"stem":149},"Netlify","/docs/deploy/netlify","docs/6.deploy/7.netlify",{"title":151,"path":152,"stem":153},"AWS Amplify","/docs/deploy/aws-amplify","docs/6.deploy/8.aws-amplify",{"title":155,"path":156,"stem":157},"Docker","/docs/deploy/docker","docs/6.deploy/9.docker",{"title":159,"icon":114,"path":160,"stem":161,"children":162,"page":50},"Integrations","/docs/integrations","docs/7.integrations",[163,167],{"title":164,"path":165,"stem":166},"Nuxt i18n","/docs/integrations/i18n","docs/7.integrations/01.i18n",{"title":168,"path":169,"stem":170},"Nuxt LLMs","/docs/integrations/llms","docs/7.integrations/02.llms",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":50},"Advanced","i-lucide-code-xml","/docs/advanced","docs/8.advanced",[177,181,185,189,193,197,201],{"title":178,"path":179,"stem":180},"Full-Text Search","/docs/advanced/fulltext-search","docs/8.advanced/1.fulltext-search",{"title":182,"path":183,"stem":184},"Raw Content","/docs/advanced/raw-content","docs/8.advanced/2.raw-content",{"title":186,"path":187,"stem":188},"SQL Storage","/docs/advanced/database","docs/8.advanced/3.database",{"title":190,"path":191,"stem":192},"Debugging tools","/docs/advanced/tools","docs/8.advanced/4.tools",{"title":194,"path":195,"stem":196},"Hooks","/docs/advanced/hooks","docs/8.advanced/5.hooks",{"title":198,"path":199,"stem":200},"Custom Source","/docs/advanced/custom-source","docs/8.advanced/6.custom-source",{"title":202,"path":203,"stem":204},"Transformers","/docs/advanced/transformers","docs/8.advanced/8.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/docs/6.deploy/9.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 /app\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 ./\n\n# Install dependencies\nRUN pnpm i\n\n# Copy the entire project\nCOPY . ./\n\n# Build the project\nRUN pnpm run build\n\n# Build Stage 2\n\nFROM node:22-alpine\nWORKDIR /app\n\n# Only `.output` folder is needed from the build stage\nCOPY --from=build /app/.output/ ./\n\n# Change the port and host\nENV PORT=80\nENV HOST=0.0.0.0\n\nEXPOSE 80\n\nCMD [\"node\", \"/app/server/index.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}," /app\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 ./\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}," . ./\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 /app/.output/ ./\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},"\"/app/server/index.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://hub.docker.com/r/oven/bun/tags\nFROM oven/bun:1 AS build\nWORKDIR /app\n\nCOPY package.json bun.lock* ./\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/bun:1 AS production\nWORKDIR /app\n\n# Only `.output` folder is needed from the build stage\nCOPY --from=build /app/.output /app\n\n# run the app\nEXPOSE 3000/tcp\nENTRYPOINT [ \"bun\", \"--bun\", \"run\", \"/app/server/index.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://hub.docker.com/r/oven/bun/tags\n",[234,508,509,511,514,516],{"class":236,"line":251},[234,510,255],{"class":254},[234,512,513],{"class":258}," oven/bun: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* ./\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 /app/.output /app\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/tcp\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/i18n module.",1774543464433]