[{"data":1,"prerenderedAt":416},["ShallowReactive",2],{"docs-nav":3,"docs:\u002Fdocs\u002Fconcepts\u002Ftargets-and-runtimes":139},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136],{"path":5,"title":6},"\u002Fdocs\u002Faccess-gating","Protect a local route",{"path":8,"title":9},"\u002Fdocs\u002Farchitecture\u002Fsecurity-and-trust","Security and trust",{"path":11,"title":12},"\u002Fdocs\u002Fconcepts\u002Fbuilds-and-deployments","Build and deploy",{"path":14,"title":15},"\u002Fdocs\u002Fconcepts\u002Fconfiguration-ownership","Where configuration belongs",{"path":17,"title":18},"\u002Fdocs\u002Fconcepts\u002Fenvironments-and-secrets","Environment values and secrets",{"path":20,"title":21},"\u002Fdocs\u002Fconcepts\u002Fmental-model","How projects fit together",{"path":23,"title":24},"\u002Fdocs\u002Fconcepts\u002Fplans-and-apply","Plans and apply",{"path":26,"title":27},"\u002Fdocs\u002Fconcepts\u002Ftargets-and-runtimes","Choose a target and runtime",{"path":29,"title":30},"\u002Fdocs\u002Fcontribute\u002Freleases","Publish a release",{"path":32,"title":33},"\u002Fdocs\u002Fdevelopment-mounts","Development mounts",{"path":35,"title":36},"\u002Fdocs\u002Fgetting-started","Getting started",{"path":38,"title":39},"\u002Fdocs\u002Fhelp\u002Ffaq","FAQ",{"path":41,"title":42},"\u002Fdocs\u002Fhelp\u002Ftroubleshooting","Troubleshooting",{"path":44,"title":45},"\u002Fdocs\u002Fhow-to\u002Fdeploy-production","Prepare a deployment environment",{"path":47,"title":48},"\u002Fdocs\u002Fhow-to\u002Fswarm-cluster","Run on a multi-node Swarm",{"path":50,"title":51},"\u002Fdocs","mm documentation",{"path":53,"title":54},"\u002Fdocs\u002Fjobs-and-schedules","Jobs and schedules",{"path":56,"title":57},"\u002Fdocs\u002Flocal-dashboard","Local dashboard",{"path":59,"title":60},"\u002Fdocs\u002Flocal-https","Local HTTPS",{"path":62,"title":63},"\u002Fdocs\u002Flocal-services","Local services",{"path":65,"title":66},"\u002Fdocs\u002Fmcp","Let an AI agent work on your project",{"path":68,"title":69},"\u002Fdocs\u002Fmulti-project-hosts","Run multiple projects on one host",{"path":71,"title":72},"\u002Fdocs\u002Fonboarding","Set up a project",{"path":74,"title":75},"\u002Fdocs\u002Fopenbao","Use OpenBao",{"path":77,"title":78},"\u002Fdocs\u002Fproject\u002Fcontributing","Contributing",{"path":80,"title":81},"\u002Fdocs\u002Fproject\u002Flicense","License",{"path":83,"title":84},"\u002Fdocs\u002Fproject\u002Fsecurity","Security",{"path":86,"title":87},"\u002Fdocs\u002Freference\u002Fcapability-matrix","Supported features and platforms",{"path":89,"title":90},"\u002Fdocs\u002Freference\u002Fcli","CLI command reference",{"path":92,"title":93},"\u002Fdocs\u002Freference\u002Fconfiguration","Configuration",{"path":95,"title":96},"\u002Fdocs\u002Freference\u002Fenvironment-variables","Environment variables",{"path":98,"title":99},"\u002Fdocs\u002Freference\u002Ferrors-and-exit-codes","Errors and exit codes",{"path":101,"title":102},"\u002Fdocs\u002Freference\u002Fknown-issues","Known limitations",{"path":104,"title":105},"\u002Fdocs\u002Fremote-access","Manage remote access",{"path":107,"title":108},"\u002Fdocs\u002Fremote-daemon","Set up a remote host",{"path":110,"title":111},"\u002Fdocs\u002Fruntime-observability","Status, logs, and commands",{"path":113,"title":114},"\u002Fdocs\u002Fsecret-delivery","Pass secrets to your app",{"path":116,"title":117},"\u002Fdocs\u002Fsecret-providers","Choose a secret store",{"path":119,"title":120},"\u002Fdocs\u002Fstart\u002Finstall","Install mm",{"path":122,"title":123},"\u002Fdocs\u002Fterminal-ui","Terminal UI",{"path":125,"title":126},"\u002Fdocs\u002Ftutorials\u002Fdotnet-web-api",".NET web API example",{"path":128,"title":129},"\u002Fdocs\u002Ftutorials\u002Ffirst-local-app","First local app",{"path":131,"title":132},"\u002Fdocs\u002Ftutorials\u002Flaravel-rust","Laravel and Rust example",{"path":134,"title":135},"\u002Fdocs\u002Ftutorials\u002Fnode-fullstack","Node full stack example",{"path":137,"title":138},"\u002Fdocs\u002Fvault","Use HashiCorp Vault",{"id":140,"title":27,"body":141,"description":409,"extension":410,"meta":411,"navigation":412,"path":26,"seo":413,"stem":414,"__hash__":415},"docs\u002Fdocs\u002Fconcepts\u002Ftargets-and-runtimes.md",{"type":142,"value":143,"toc":403},"minimark",[144,157,162,224,231,234,267,270,274,326,335,339,354,373,376,380,387,399],[145,146,147,148,152,153,156],"p",{},"A ",[149,150,151],"strong",{},"target"," is a machine where you run services. A ",[149,154,155],{},"runtime"," is the container\ntool mm uses on that machine: Docker Compose, Podman Compose, or Docker Swarm.",[158,159,161],"h2",{"id":160},"use-a-local-runtime","Use a local runtime",[163,164,169],"pre",{"className":165,"code":166,"language":167,"meta":168,"style":168},"language-sh shiki shiki-themes mm","mm target list\nmm target preference set-runtime docker-compose\nmm target preference show\nmm doctor\n","sh","",[170,171,172,188,204,216],"code",{"__ignoreMap":168},[173,174,177,181,185],"span",{"class":175,"line":176},"line",1,[173,178,180],{"class":179},"svrjQ","mm",[173,182,184],{"class":183},"sv8ni"," target",[173,186,187],{"class":183}," list\n",[173,189,191,193,195,198,201],{"class":175,"line":190},2,[173,192,180],{"class":179},[173,194,184],{"class":183},[173,196,197],{"class":183}," preference",[173,199,200],{"class":183}," set-runtime",[173,202,203],{"class":183}," docker-compose\n",[173,205,207,209,211,213],{"class":175,"line":206},3,[173,208,180],{"class":179},[173,210,184],{"class":183},[173,212,197],{"class":183},[173,214,215],{"class":183}," show\n",[173,217,219,221],{"class":175,"line":218},4,[173,220,180],{"class":179},[173,222,223],{"class":183}," doctor\n",[145,225,226,227,230],{},"Use ",[170,228,229],{},"podman-compose"," if that is your chosen engine. Preferences are private\nworkstation settings; they do not change the repository.",[145,232,233],{},"To override the choice for one command:",[163,235,237],{"className":165,"code":236,"language":167,"meta":168,"style":168},"mm --environment local --runtime podman-compose --target local deploy plan\n",[170,238,239],{"__ignoreMap":168},[173,240,241,243,247,250,253,256,259,261,264],{"class":175,"line":176},[173,242,180],{"class":179},[173,244,246],{"class":245},"sbRf1"," --environment",[173,248,249],{"class":183}," local",[173,251,252],{"class":245}," --runtime",[173,254,255],{"class":183}," podman-compose",[173,257,258],{"class":245}," --target",[173,260,249],{"class":183},[173,262,263],{"class":183}," deploy",[173,265,266],{"class":183}," plan\n",[145,268,269],{},"If the selected runtime is missing or unsupported, mm reports an error rather\nthan switching to another engine.",[158,271,273],{"id":272},"set-environment-specific-preferences","Set environment-specific preferences",[163,275,277],{"className":165,"code":276,"language":167,"meta":168,"style":168},"mm target preference set-runtime docker-compose --environment local\nmm target preference set-target production --environment production\nmm target preference show\n",[170,278,279,297,316],{"__ignoreMap":168},[173,280,281,283,285,287,289,292,294],{"class":175,"line":176},[173,282,180],{"class":179},[173,284,184],{"class":183},[173,286,197],{"class":183},[173,288,200],{"class":183},[173,290,291],{"class":183}," docker-compose",[173,293,246],{"class":245},[173,295,296],{"class":183}," local\n",[173,298,299,301,303,305,308,311,313],{"class":175,"line":190},[173,300,180],{"class":179},[173,302,184],{"class":183},[173,304,197],{"class":183},[173,306,307],{"class":183}," set-target",[173,309,310],{"class":183}," production",[173,312,246],{"class":245},[173,314,315],{"class":183}," production\n",[173,317,318,320,322,324],{"class":175,"line":206},[173,319,180],{"class":179},[173,321,184],{"class":183},[173,323,197],{"class":183},[173,325,215],{"class":183},[145,327,328,329,334],{},"The target must already exist. To register a remote host, follow\n",[330,331,333],"a",{"href":332},"..\u002Fremote-daemon#connect-a-client","remote daemon setup","; it requires verified\nSSH host and daemon identities, not just a hostname.",[158,336,338],{"id":337},"which-setting-wins","Which setting wins?",[145,340,341,342,345,346,349,350,353],{},"Environment selection uses ",[170,343,344],{},"--environment","\u002F",[170,347,348],{},"MM_ENVIRONMENT",", then\n",[170,351,352],{},"default-environment",". Target and runtime selection each use this order:",[355,356,357,361,364,367,370],"ol",{},[358,359,360],"li",{},"Command-line flag.",[358,362,363],{},"Private preference for the selected environment.",[358,365,366],{},"Private preference for the project.",[358,368,369],{},"Environment configuration.",[358,371,372],{},"Project configuration.",[145,374,375],{},"If no runtime is selected there, mm uses the target's default runtime.\nThe target must offer that runtime.",[158,377,379],{"id":378},"runtime-differences","Runtime differences",[145,381,382,383,386],{},"Docker Compose and Podman Compose support local source mounts, jobs, container\nhealth, logs, and exec. Docker Swarm deploys from a manager to one or many\nnodes; see ",[330,384,48],{"href":385},"..\u002Fhow-to\u002Fswarm-cluster"," to pin\nservices and share volumes. Swarm does not support development mounts, one-shot\njobs, local-CA HTTPS routes, or operations that update files inside managed volumes.",[145,388,389,390,394,395,398],{},"See the ",[330,391,393],{"href":392},"..\u002Freference\u002Fcapability-matrix","support table"," for details.\nRemote operations go through ",[170,396,397],{},"mmd"," over SSH; mm does not connect directly to\nremote Docker or Podman sockets.",[400,401,402],"style",{},"html pre.shiki code .svrjQ, html code.shiki .svrjQ{--shiki-default:var(--mm-code-function)}html pre.shiki code .sv8ni, html code.shiki .sv8ni{--shiki-default:var(--mm-code-string)}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 pre.shiki code .sbRf1, html code.shiki .sbRf1{--shiki-default:var(--mm-code-option)}",{"title":168,"searchDepth":190,"depth":190,"links":404},[405,406,407,408],{"id":160,"depth":190,"text":161},{"id":272,"depth":190,"text":273},{"id":337,"depth":190,"text":338},{"id":378,"depth":190,"text":379},"Choose where your project runs and which container engine mm uses.","md",{},true,{"title":27,"description":409},"docs\u002Fconcepts\u002Ftargets-and-runtimes","b2wCjfY163uTpkp-eYNCGVJWIEGQwwybXzmU3Nj1X2k",1794512545913]