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