[{"data":1,"prerenderedAt":2287},["ShallowReactive",2],{"navigation_docs":3,"-docker-containers":204,"-docker-containers-surround":2282},[4,40,69,82,91,116,129,146,167],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Project Structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",{"title":31,"path":32,"stem":33,"icon":34},"First Deployment","\u002Fgetting-started\u002Ffirst-deployment","1.getting-started\u002F5.first-deployment","i-lucide-upload-cloud",{"title":36,"path":37,"stem":38,"icon":39},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F6.troubleshooting","i-lucide-wrench",{"title":41,"children":42,"path":67,"stem":68,"page":6},"Platform",[43,47,51,55,59,63],{"title":44,"path":45,"stem":46},"Dashboard","\u002Fplatform\u002Fdashboard","2.platform\u002F1.dashboard",{"title":48,"path":49,"stem":50},"Marketplace","\u002Fplatform\u002Fmarketplace","2.platform\u002F2.marketplace",{"title":52,"path":53,"stem":54},"Monitoring & Metrics","\u002Fplatform\u002Fmonitoring","2.platform\u002F3.monitoring",{"title":56,"path":57,"stem":58},"Projects","\u002Fplatform\u002Fprojects","2.platform\u002F4.projects",{"title":60,"path":61,"stem":62},"Services","\u002Fplatform\u002Fservices","2.platform\u002F5.services",{"title":64,"path":65,"stem":66},"Logs","\u002Fplatform\u002Flogs","2.platform\u002F6.logs","\u002Fplatform","2.platform",{"title":70,"children":71,"path":80,"stem":81,"page":6},"CLI",[72,76],{"title":73,"path":74,"stem":75},"CLI Installation","\u002Fcli\u002Finstallation","3.cli\u002F1.installation",{"title":77,"path":78,"stem":79},"Commands Reference","\u002Fcli\u002Fcommands","3.cli\u002F2.commands","\u002Fcli","3.cli",{"title":83,"children":84,"path":89,"stem":90,"page":6},"TUI",[85],{"title":86,"path":87,"stem":88},"TUI Overview","\u002Ftui\u002Foverview","4.tui\u002F1.overview","\u002Ftui","4.tui",{"title":92,"children":93,"path":114,"stem":115,"page":6},"Docker",[94,98,102,106,110],{"title":95,"path":96,"stem":97},"Docker Containers","\u002Fdocker\u002Fcontainers","5.docker\u002F1.containers",{"title":99,"path":100,"stem":101},"Docker Images","\u002Fdocker\u002Fimages","5.docker\u002F2.images",{"title":103,"path":104,"stem":105},"Docker Compose","\u002Fdocker\u002Fcompose","5.docker\u002F3.compose",{"title":107,"path":108,"stem":109},"Docker Volumes","\u002Fdocker\u002Fvolumes","5.docker\u002F4.volumes",{"title":111,"path":112,"stem":113},"Docker Networks","\u002Fdocker\u002Fnetworks","5.docker\u002F5.networks","\u002Fdocker","5.docker",{"title":117,"children":118,"path":127,"stem":128,"page":6},"PM2",[119,123],{"title":120,"path":121,"stem":122},"Process Management","\u002Fpm2\u002Fprocess-management","6.pm2\u002F1.process-management",{"title":124,"path":125,"stem":126},"Zero-Downtime Deployments","\u002Fpm2\u002Fzero-downtime","6.pm2\u002F2.zero-downtime","\u002Fpm2","6.pm2",{"title":130,"children":131,"path":144,"stem":145,"page":6},"VPS",[132,136,140],{"title":133,"path":134,"stem":135},"VPS Management","\u002Fvps\u002Fssh-management","7.vps\u002F1.ssh-management",{"title":137,"path":138,"stem":139},"SSH Access","\u002Fvps\u002Fssh","7.vps\u002F2.ssh",{"title":141,"path":142,"stem":143},"Firewall","\u002Fvps\u002Ffirewall","7.vps\u002F3.firewall","\u002Fvps","7.vps",{"title":147,"children":148,"path":165,"stem":166,"page":6},"Deployment",[149,153,157,161],{"title":150,"path":151,"stem":152},"Production Setup","\u002Fdeployment\u002Fproduction-setup","8.deployment\u002F1.production-setup",{"title":154,"path":155,"stem":156},"Scaling","\u002Fdeployment\u002Fscaling","8.deployment\u002F2.scaling",{"title":158,"path":159,"stem":160},"GitHub Actions CI\u002FCD","\u002Fdeployment\u002Fgithub-actions","8.deployment\u002F3.github-actions",{"title":162,"path":163,"stem":164},"Security","\u002Fdeployment\u002Fsecurity","8.deployment\u002F4.security","\u002Fdeployment","8.deployment",{"title":168,"children":169,"path":202,"stem":203,"page":6},"Reference",[170,174,178,182,186,190,194,198],{"title":171,"path":172,"stem":173},"Architecture","\u002Freference\u002Farchitecture","9.reference\u002F1.architecture",{"title":175,"path":176,"stem":177},"CLI Reference","\u002Freference\u002Fcli-reference","9.reference\u002F2.cli-reference",{"title":179,"path":180,"stem":181},"Environment Variables","\u002Freference\u002Fenvironment-variables","9.reference\u002F3.environment-variables",{"title":183,"path":184,"stem":185},"API Reference","\u002Freference\u002Fapi-reference","9.reference\u002F4.api-reference",{"title":187,"path":188,"stem":189},"Webhooks","\u002Freference\u002Fwebhooks","9.reference\u002F5.webhooks",{"title":191,"path":192,"stem":193},"Authentication","\u002Freference\u002Fauthentication","9.reference\u002F6.authentication",{"title":195,"path":196,"stem":197},"Configuration","\u002Freference\u002Fconfiguration","9.reference\u002F7.configuration",{"title":199,"path":200,"stem":201},"API Overview","\u002Freference\u002Fapi","9.reference\u002F8.api","\u002Freference","9.reference",{"id":205,"title":95,"body":206,"description":2276,"extension":2277,"links":2278,"meta":2279,"navigation":264,"path":96,"seo":2280,"stem":97,"__hash__":2281},"docs\u002F5.docker\u002F1.containers.md",{"type":207,"value":208,"toc":2241},"minimark",[209,214,218,223,226,325,329,334,673,677,681,773,777,920,924,985,989,1069,1073,1077,1118,1122,1163,1167,1279,1283,1345,1349,1353,1375,1379,1438,1442,1504,1508,1512,1533,1537,1606,1610,1704,1708,1712,1802,1806,1898,1902,1996,2000,2192,2196,2221,2224,2237],[210,211,213],"h1",{"id":212},"docker-container-management","Docker Container Management",[215,216,217],"p",{},"SkyPort provides a powerful interface for managing Docker containers.",[219,220,222],"h2",{"id":221},"list-containers","List Containers",[215,224,225],{},"View all containers on your system:",[227,228,233],"pre",{"className":229,"code":230,"language":231,"meta":232,"style":232},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# List running containers\nskyport docker ps\n\n# List all containers (including stopped)\nskyport docker ps -a\n\n# Show container details\nskyport docker ps --format json\nskyport docker ps --format table\n","bash","",[234,235,236,245,259,266,272,285,290,296,311],"code",{"__ignoreMap":232},[237,238,241],"span",{"class":239,"line":240},"line",1,[237,242,244],{"class":243},"sHwdD","# List running containers\n",[237,246,248,252,256],{"class":239,"line":247},2,[237,249,251],{"class":250},"sBMFI","skyport",[237,253,255],{"class":254},"sfazB"," docker",[237,257,258],{"class":254}," ps\n",[237,260,262],{"class":239,"line":261},3,[237,263,265],{"emptyLinePlaceholder":264},true,"\n",[237,267,269],{"class":239,"line":268},4,[237,270,271],{"class":243},"# List all containers (including stopped)\n",[237,273,275,277,279,282],{"class":239,"line":274},5,[237,276,251],{"class":250},[237,278,255],{"class":254},[237,280,281],{"class":254}," ps",[237,283,284],{"class":254}," -a\n",[237,286,288],{"class":239,"line":287},6,[237,289,265],{"emptyLinePlaceholder":264},[237,291,293],{"class":239,"line":292},7,[237,294,295],{"class":243},"# Show container details\n",[237,297,299,301,303,305,308],{"class":239,"line":298},8,[237,300,251],{"class":250},[237,302,255],{"class":254},[237,304,281],{"class":254},[237,306,307],{"class":254}," --format",[237,309,310],{"class":254}," json\n",[237,312,314,316,318,320,322],{"class":239,"line":313},9,[237,315,251],{"class":250},[237,317,255],{"class":254},[237,319,281],{"class":254},[237,321,307],{"class":254},[237,323,324],{"class":254}," table\n",[219,326,328],{"id":327},"running-containers","Running Containers",[330,331,333],"h3",{"id":332},"start-a-new-container","Start a New Container",[227,335,337],{"className":229,"code":336,"language":231,"meta":232,"style":232},"# Simple container\nskyport docker run -d nginx:latest\n\n# Named container with port mapping\nskyport docker run -d \\\n  --name webserver \\\n  -p 8000:80 \\\n  nginx:latest\n\n# Container with environment variables\nskyport docker run -d \\\n  --name app \\\n  -e NODE_ENV=production \\\n  -e PORT=3000 \\\n  node-app:latest\n\n# Container with volume mounting\nskyport docker run -d \\\n  --name db \\\n  -v postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata \\\n  postgres:15\n\n# Container with resource limits\nskyport docker run -d \\\n  --name heavy-app \\\n  --memory=\"512m\" \\\n  --cpus=\"1\" \\\n  heavy-app:latest\n\n# Container with health check\nskyport docker run -d \\\n  --name webapp \\\n  --health-cmd=\"curl -f http:\u002F\u002Flocalhost\u002F || exit 1\" \\\n  --health-interval=30s \\\n  --health-timeout=5s \\\n  --health-retries=3 \\\n  webapp:latest\n",[234,338,339,344,359,363,368,382,392,402,407,411,417,430,440,451,465,471,476,482,495,505,516,522,527,533,546,556,573,588,594,599,605,618,628,643,651,659,667],{"__ignoreMap":232},[237,340,341],{"class":239,"line":240},[237,342,343],{"class":243},"# Simple container\n",[237,345,346,348,350,353,356],{"class":239,"line":247},[237,347,251],{"class":250},[237,349,255],{"class":254},[237,351,352],{"class":254}," run",[237,354,355],{"class":254}," -d",[237,357,358],{"class":254}," nginx:latest\n",[237,360,361],{"class":239,"line":261},[237,362,265],{"emptyLinePlaceholder":264},[237,364,365],{"class":239,"line":268},[237,366,367],{"class":243},"# Named container with port mapping\n",[237,369,370,372,374,376,378],{"class":239,"line":274},[237,371,251],{"class":250},[237,373,255],{"class":254},[237,375,352],{"class":254},[237,377,355],{"class":254},[237,379,381],{"class":380},"sTEyZ"," \\\n",[237,383,384,387,390],{"class":239,"line":287},[237,385,386],{"class":254},"  --name",[237,388,389],{"class":254}," webserver",[237,391,381],{"class":380},[237,393,394,397,400],{"class":239,"line":292},[237,395,396],{"class":254},"  -p",[237,398,399],{"class":254}," 8000:80",[237,401,381],{"class":380},[237,403,404],{"class":239,"line":298},[237,405,406],{"class":254},"  nginx:latest\n",[237,408,409],{"class":239,"line":313},[237,410,265],{"emptyLinePlaceholder":264},[237,412,414],{"class":239,"line":413},10,[237,415,416],{"class":243},"# Container with environment variables\n",[237,418,420,422,424,426,428],{"class":239,"line":419},11,[237,421,251],{"class":250},[237,423,255],{"class":254},[237,425,352],{"class":254},[237,427,355],{"class":254},[237,429,381],{"class":380},[237,431,433,435,438],{"class":239,"line":432},12,[237,434,386],{"class":254},[237,436,437],{"class":254}," app",[237,439,381],{"class":380},[237,441,443,446,449],{"class":239,"line":442},13,[237,444,445],{"class":254},"  -e",[237,447,448],{"class":254}," NODE_ENV=production",[237,450,381],{"class":380},[237,452,454,456,459,463],{"class":239,"line":453},14,[237,455,445],{"class":254},[237,457,458],{"class":254}," PORT=",[237,460,462],{"class":461},"sbssI","3000",[237,464,381],{"class":380},[237,466,468],{"class":239,"line":467},15,[237,469,470],{"class":254},"  node-app:latest\n",[237,472,474],{"class":239,"line":473},16,[237,475,265],{"emptyLinePlaceholder":264},[237,477,479],{"class":239,"line":478},17,[237,480,481],{"class":243},"# Container with volume mounting\n",[237,483,485,487,489,491,493],{"class":239,"line":484},18,[237,486,251],{"class":250},[237,488,255],{"class":254},[237,490,352],{"class":254},[237,492,355],{"class":254},[237,494,381],{"class":380},[237,496,498,500,503],{"class":239,"line":497},19,[237,499,386],{"class":254},[237,501,502],{"class":254}," db",[237,504,381],{"class":380},[237,506,508,511,514],{"class":239,"line":507},20,[237,509,510],{"class":254},"  -v",[237,512,513],{"class":254}," postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata",[237,515,381],{"class":380},[237,517,519],{"class":239,"line":518},21,[237,520,521],{"class":254},"  postgres:15\n",[237,523,525],{"class":239,"line":524},22,[237,526,265],{"emptyLinePlaceholder":264},[237,528,530],{"class":239,"line":529},23,[237,531,532],{"class":243},"# Container with resource limits\n",[237,534,536,538,540,542,544],{"class":239,"line":535},24,[237,537,251],{"class":250},[237,539,255],{"class":254},[237,541,352],{"class":254},[237,543,355],{"class":254},[237,545,381],{"class":380},[237,547,549,551,554],{"class":239,"line":548},25,[237,550,386],{"class":254},[237,552,553],{"class":254}," heavy-app",[237,555,381],{"class":380},[237,557,559,562,566,569,571],{"class":239,"line":558},26,[237,560,561],{"class":254},"  --memory=",[237,563,565],{"class":564},"sMK4o","\"",[237,567,568],{"class":254},"512m",[237,570,565],{"class":564},[237,572,381],{"class":380},[237,574,576,579,581,584,586],{"class":239,"line":575},27,[237,577,578],{"class":254},"  --cpus=",[237,580,565],{"class":564},[237,582,583],{"class":254},"1",[237,585,565],{"class":564},[237,587,381],{"class":380},[237,589,591],{"class":239,"line":590},28,[237,592,593],{"class":254},"  heavy-app:latest\n",[237,595,597],{"class":239,"line":596},29,[237,598,265],{"emptyLinePlaceholder":264},[237,600,602],{"class":239,"line":601},30,[237,603,604],{"class":243},"# Container with health check\n",[237,606,608,610,612,614,616],{"class":239,"line":607},31,[237,609,251],{"class":250},[237,611,255],{"class":254},[237,613,352],{"class":254},[237,615,355],{"class":254},[237,617,381],{"class":380},[237,619,621,623,626],{"class":239,"line":620},32,[237,622,386],{"class":254},[237,624,625],{"class":254}," webapp",[237,627,381],{"class":380},[237,629,631,634,636,639,641],{"class":239,"line":630},33,[237,632,633],{"class":254},"  --health-cmd=",[237,635,565],{"class":564},[237,637,638],{"class":254},"curl -f http:\u002F\u002Flocalhost\u002F || exit 1",[237,640,565],{"class":564},[237,642,381],{"class":380},[237,644,646,649],{"class":239,"line":645},34,[237,647,648],{"class":254},"  --health-interval=30s",[237,650,381],{"class":380},[237,652,654,657],{"class":239,"line":653},35,[237,655,656],{"class":254},"  --health-timeout=5s",[237,658,381],{"class":380},[237,660,662,665],{"class":239,"line":661},36,[237,663,664],{"class":254},"  --health-retries=3",[237,666,381],{"class":380},[237,668,670],{"class":239,"line":669},37,[237,671,672],{"class":254},"  webapp:latest\n",[219,674,676],{"id":675},"container-operations","Container Operations",[330,678,680],{"id":679},"view-logs","View Logs",[227,682,684],{"className":229,"code":683,"language":231,"meta":232,"style":232},"# View logs\nskyport docker logs container-name\n\n# Follow logs (tail -f style)\nskyport docker logs container-name -f\n\n# View last 100 lines\nskyport docker logs container-name --tail 100\n\n# View logs with timestamps\nskyport docker logs container-name --timestamps\n",[234,685,686,691,703,707,712,726,730,735,751,755,760],{"__ignoreMap":232},[237,687,688],{"class":239,"line":240},[237,689,690],{"class":243},"# View logs\n",[237,692,693,695,697,700],{"class":239,"line":247},[237,694,251],{"class":250},[237,696,255],{"class":254},[237,698,699],{"class":254}," logs",[237,701,702],{"class":254}," container-name\n",[237,704,705],{"class":239,"line":261},[237,706,265],{"emptyLinePlaceholder":264},[237,708,709],{"class":239,"line":268},[237,710,711],{"class":243},"# Follow logs (tail -f style)\n",[237,713,714,716,718,720,723],{"class":239,"line":274},[237,715,251],{"class":250},[237,717,255],{"class":254},[237,719,699],{"class":254},[237,721,722],{"class":254}," container-name",[237,724,725],{"class":254}," -f\n",[237,727,728],{"class":239,"line":287},[237,729,265],{"emptyLinePlaceholder":264},[237,731,732],{"class":239,"line":292},[237,733,734],{"class":243},"# View last 100 lines\n",[237,736,737,739,741,743,745,748],{"class":239,"line":298},[237,738,251],{"class":250},[237,740,255],{"class":254},[237,742,699],{"class":254},[237,744,722],{"class":254},[237,746,747],{"class":254}," --tail",[237,749,750],{"class":461}," 100\n",[237,752,753],{"class":239,"line":313},[237,754,265],{"emptyLinePlaceholder":264},[237,756,757],{"class":239,"line":413},[237,758,759],{"class":243},"# View logs with timestamps\n",[237,761,762,764,766,768,770],{"class":239,"line":419},[237,763,251],{"class":250},[237,765,255],{"class":254},[237,767,699],{"class":254},[237,769,722],{"class":254},[237,771,772],{"class":254}," --timestamps\n",[330,774,776],{"id":775},"manage-containers","Manage Containers",[227,778,780],{"className":229,"code":779,"language":231,"meta":232,"style":232},"# Start container\nskyport docker start container-name\n\n# Stop container\nskyport docker stop container-name\n\n# Restart container\nskyport docker restart container-name\n\n# Pause container\nskyport docker pause container-name\n\n# Unpause container\nskyport docker unpause container-name\n\n# Remove container\nskyport docker rm container-name\n\n# Remove with force\nskyport docker rm -f container-name\n",[234,781,782,787,798,802,807,818,822,827,838,842,847,858,862,867,878,882,887,898,902,907],{"__ignoreMap":232},[237,783,784],{"class":239,"line":240},[237,785,786],{"class":243},"# Start container\n",[237,788,789,791,793,796],{"class":239,"line":247},[237,790,251],{"class":250},[237,792,255],{"class":254},[237,794,795],{"class":254}," start",[237,797,702],{"class":254},[237,799,800],{"class":239,"line":261},[237,801,265],{"emptyLinePlaceholder":264},[237,803,804],{"class":239,"line":268},[237,805,806],{"class":243},"# Stop container\n",[237,808,809,811,813,816],{"class":239,"line":274},[237,810,251],{"class":250},[237,812,255],{"class":254},[237,814,815],{"class":254}," stop",[237,817,702],{"class":254},[237,819,820],{"class":239,"line":287},[237,821,265],{"emptyLinePlaceholder":264},[237,823,824],{"class":239,"line":292},[237,825,826],{"class":243},"# Restart container\n",[237,828,829,831,833,836],{"class":239,"line":298},[237,830,251],{"class":250},[237,832,255],{"class":254},[237,834,835],{"class":254}," restart",[237,837,702],{"class":254},[237,839,840],{"class":239,"line":313},[237,841,265],{"emptyLinePlaceholder":264},[237,843,844],{"class":239,"line":413},[237,845,846],{"class":243},"# Pause container\n",[237,848,849,851,853,856],{"class":239,"line":419},[237,850,251],{"class":250},[237,852,255],{"class":254},[237,854,855],{"class":254}," pause",[237,857,702],{"class":254},[237,859,860],{"class":239,"line":432},[237,861,265],{"emptyLinePlaceholder":264},[237,863,864],{"class":239,"line":442},[237,865,866],{"class":243},"# Unpause container\n",[237,868,869,871,873,876],{"class":239,"line":453},[237,870,251],{"class":250},[237,872,255],{"class":254},[237,874,875],{"class":254}," unpause",[237,877,702],{"class":254},[237,879,880],{"class":239,"line":467},[237,881,265],{"emptyLinePlaceholder":264},[237,883,884],{"class":239,"line":473},[237,885,886],{"class":243},"# Remove container\n",[237,888,889,891,893,896],{"class":239,"line":478},[237,890,251],{"class":250},[237,892,255],{"class":254},[237,894,895],{"class":254}," rm",[237,897,702],{"class":254},[237,899,900],{"class":239,"line":484},[237,901,265],{"emptyLinePlaceholder":264},[237,903,904],{"class":239,"line":497},[237,905,906],{"class":243},"# Remove with force\n",[237,908,909,911,913,915,918],{"class":239,"line":507},[237,910,251],{"class":250},[237,912,255],{"class":254},[237,914,895],{"class":254},[237,916,917],{"class":254}," -f",[237,919,702],{"class":254},[330,921,923],{"id":922},"container-information","Container Information",[227,925,927],{"className":229,"code":926,"language":231,"meta":232,"style":232},"# View container details\nskyport docker inspect container-name\n\n# View container stats\nskyport docker stats container-name\n\n# View running processes in container\nskyport docker top container-name\n",[234,928,929,934,945,949,954,965,969,974],{"__ignoreMap":232},[237,930,931],{"class":239,"line":240},[237,932,933],{"class":243},"# View container details\n",[237,935,936,938,940,943],{"class":239,"line":247},[237,937,251],{"class":250},[237,939,255],{"class":254},[237,941,942],{"class":254}," inspect",[237,944,702],{"class":254},[237,946,947],{"class":239,"line":261},[237,948,265],{"emptyLinePlaceholder":264},[237,950,951],{"class":239,"line":268},[237,952,953],{"class":243},"# View container stats\n",[237,955,956,958,960,963],{"class":239,"line":274},[237,957,251],{"class":250},[237,959,255],{"class":254},[237,961,962],{"class":254}," stats",[237,964,702],{"class":254},[237,966,967],{"class":239,"line":287},[237,968,265],{"emptyLinePlaceholder":264},[237,970,971],{"class":239,"line":292},[237,972,973],{"class":243},"# View running processes in container\n",[237,975,976,978,980,983],{"class":239,"line":298},[237,977,251],{"class":250},[237,979,255],{"class":254},[237,981,982],{"class":254}," top",[237,984,702],{"class":254},[330,986,988],{"id":987},"execute-commands","Execute Commands",[227,990,992],{"className":229,"code":991,"language":231,"meta":232,"style":232},"# Execute command in container\nskyport docker exec container-name ls -la\n\n# Interactive terminal session\nskyport docker exec -it container-name \u002Fbin\u002Fbash\n\n# Run with environment\nskyport docker exec -e VAR=value container-name command\n",[234,993,994,999,1016,1020,1025,1041,1045,1050],{"__ignoreMap":232},[237,995,996],{"class":239,"line":240},[237,997,998],{"class":243},"# Execute command in container\n",[237,1000,1001,1003,1005,1008,1010,1013],{"class":239,"line":247},[237,1002,251],{"class":250},[237,1004,255],{"class":254},[237,1006,1007],{"class":254}," exec",[237,1009,722],{"class":254},[237,1011,1012],{"class":254}," ls",[237,1014,1015],{"class":254}," -la\n",[237,1017,1018],{"class":239,"line":261},[237,1019,265],{"emptyLinePlaceholder":264},[237,1021,1022],{"class":239,"line":268},[237,1023,1024],{"class":243},"# Interactive terminal session\n",[237,1026,1027,1029,1031,1033,1036,1038],{"class":239,"line":274},[237,1028,251],{"class":250},[237,1030,255],{"class":254},[237,1032,1007],{"class":254},[237,1034,1035],{"class":254}," -it",[237,1037,722],{"class":254},[237,1039,1040],{"class":254}," \u002Fbin\u002Fbash\n",[237,1042,1043],{"class":239,"line":287},[237,1044,265],{"emptyLinePlaceholder":264},[237,1046,1047],{"class":239,"line":292},[237,1048,1049],{"class":243},"# Run with environment\n",[237,1051,1052,1054,1056,1058,1061,1064,1066],{"class":239,"line":298},[237,1053,251],{"class":250},[237,1055,255],{"class":254},[237,1057,1007],{"class":254},[237,1059,1060],{"class":254}," -e",[237,1062,1063],{"class":254}," VAR=value",[237,1065,722],{"class":254},[237,1067,1068],{"class":254}," command\n",[219,1070,1072],{"id":1071},"images","Images",[330,1074,1076],{"id":1075},"list-images","List Images",[227,1078,1080],{"className":229,"code":1079,"language":231,"meta":232,"style":232},"# List all images\nskyport docker images\n\n# List with size\nskyport docker images --format table\n",[234,1081,1082,1087,1096,1100,1105],{"__ignoreMap":232},[237,1083,1084],{"class":239,"line":240},[237,1085,1086],{"class":243},"# List all images\n",[237,1088,1089,1091,1093],{"class":239,"line":247},[237,1090,251],{"class":250},[237,1092,255],{"class":254},[237,1094,1095],{"class":254}," images\n",[237,1097,1098],{"class":239,"line":261},[237,1099,265],{"emptyLinePlaceholder":264},[237,1101,1102],{"class":239,"line":268},[237,1103,1104],{"class":243},"# List with size\n",[237,1106,1107,1109,1111,1114,1116],{"class":239,"line":274},[237,1108,251],{"class":250},[237,1110,255],{"class":254},[237,1112,1113],{"class":254}," images",[237,1115,307],{"class":254},[237,1117,324],{"class":254},[330,1119,1121],{"id":1120},"pull-images","Pull Images",[227,1123,1125],{"className":229,"code":1124,"language":231,"meta":232,"style":232},"# Pull from Docker Hub\nskyport docker pull nginx:latest\n\n# Pull from specific registry\nskyport docker pull registry.example.com\u002Fapp:latest\n",[234,1126,1127,1132,1143,1147,1152],{"__ignoreMap":232},[237,1128,1129],{"class":239,"line":240},[237,1130,1131],{"class":243},"# Pull from Docker Hub\n",[237,1133,1134,1136,1138,1141],{"class":239,"line":247},[237,1135,251],{"class":250},[237,1137,255],{"class":254},[237,1139,1140],{"class":254}," pull",[237,1142,358],{"class":254},[237,1144,1145],{"class":239,"line":261},[237,1146,265],{"emptyLinePlaceholder":264},[237,1148,1149],{"class":239,"line":268},[237,1150,1151],{"class":243},"# Pull from specific registry\n",[237,1153,1154,1156,1158,1160],{"class":239,"line":274},[237,1155,251],{"class":250},[237,1157,255],{"class":254},[237,1159,1140],{"class":254},[237,1161,1162],{"class":254}," registry.example.com\u002Fapp:latest\n",[330,1164,1166],{"id":1165},"build-images","Build Images",[227,1168,1170],{"className":229,"code":1169,"language":231,"meta":232,"style":232},"# Build from Dockerfile\nskyport docker build -t my-app:1.0.0 .\n\n# Build with build args\nskyport docker build -t my-app:1.0.0 \\\n  --build-arg VERSION=1.0.0 \\\n  --build-arg NODE_ENV=production \\\n  .\n\n# Build and push\nskyport docker build -t my-app:1.0.0 .\nskyport docker push my-app:1.0.0\n",[234,1171,1172,1177,1195,1199,1204,1218,1231,1239,1244,1248,1253,1267],{"__ignoreMap":232},[237,1173,1174],{"class":239,"line":240},[237,1175,1176],{"class":243},"# Build from Dockerfile\n",[237,1178,1179,1181,1183,1186,1189,1192],{"class":239,"line":247},[237,1180,251],{"class":250},[237,1182,255],{"class":254},[237,1184,1185],{"class":254}," build",[237,1187,1188],{"class":254}," -t",[237,1190,1191],{"class":254}," my-app:1.0.0",[237,1193,1194],{"class":254}," .\n",[237,1196,1197],{"class":239,"line":261},[237,1198,265],{"emptyLinePlaceholder":264},[237,1200,1201],{"class":239,"line":268},[237,1202,1203],{"class":243},"# Build with build args\n",[237,1205,1206,1208,1210,1212,1214,1216],{"class":239,"line":274},[237,1207,251],{"class":250},[237,1209,255],{"class":254},[237,1211,1185],{"class":254},[237,1213,1188],{"class":254},[237,1215,1191],{"class":254},[237,1217,381],{"class":380},[237,1219,1220,1223,1226,1229],{"class":239,"line":287},[237,1221,1222],{"class":254},"  --build-arg",[237,1224,1225],{"class":254}," VERSION=",[237,1227,1228],{"class":461},"1.0.0",[237,1230,381],{"class":380},[237,1232,1233,1235,1237],{"class":239,"line":292},[237,1234,1222],{"class":254},[237,1236,448],{"class":254},[237,1238,381],{"class":380},[237,1240,1241],{"class":239,"line":298},[237,1242,1243],{"class":254},"  .\n",[237,1245,1246],{"class":239,"line":313},[237,1247,265],{"emptyLinePlaceholder":264},[237,1249,1250],{"class":239,"line":413},[237,1251,1252],{"class":243},"# Build and push\n",[237,1254,1255,1257,1259,1261,1263,1265],{"class":239,"line":419},[237,1256,251],{"class":250},[237,1258,255],{"class":254},[237,1260,1185],{"class":254},[237,1262,1188],{"class":254},[237,1264,1191],{"class":254},[237,1266,1194],{"class":254},[237,1268,1269,1271,1273,1276],{"class":239,"line":432},[237,1270,251],{"class":250},[237,1272,255],{"class":254},[237,1274,1275],{"class":254}," push",[237,1277,1278],{"class":254}," my-app:1.0.0\n",[330,1280,1282],{"id":1281},"remove-images","Remove Images",[227,1284,1286],{"className":229,"code":1285,"language":231,"meta":232,"style":232},"# Remove image\nskyport docker rmi image-name:tag\n\n# Remove unused images\nskyport docker image prune\n\n# Remove all images\nskyport docker rmi -a\n",[234,1287,1288,1293,1305,1309,1314,1326,1330,1335],{"__ignoreMap":232},[237,1289,1290],{"class":239,"line":240},[237,1291,1292],{"class":243},"# Remove image\n",[237,1294,1295,1297,1299,1302],{"class":239,"line":247},[237,1296,251],{"class":250},[237,1298,255],{"class":254},[237,1300,1301],{"class":254}," rmi",[237,1303,1304],{"class":254}," image-name:tag\n",[237,1306,1307],{"class":239,"line":261},[237,1308,265],{"emptyLinePlaceholder":264},[237,1310,1311],{"class":239,"line":268},[237,1312,1313],{"class":243},"# Remove unused images\n",[237,1315,1316,1318,1320,1323],{"class":239,"line":274},[237,1317,251],{"class":250},[237,1319,255],{"class":254},[237,1321,1322],{"class":254}," image",[237,1324,1325],{"class":254}," prune\n",[237,1327,1328],{"class":239,"line":287},[237,1329,265],{"emptyLinePlaceholder":264},[237,1331,1332],{"class":239,"line":292},[237,1333,1334],{"class":243},"# Remove all images\n",[237,1336,1337,1339,1341,1343],{"class":239,"line":298},[237,1338,251],{"class":250},[237,1340,255],{"class":254},[237,1342,1301],{"class":254},[237,1344,284],{"class":254},[219,1346,1348],{"id":1347},"volumes","Volumes",[330,1350,1352],{"id":1351},"list-volumes","List Volumes",[227,1354,1356],{"className":229,"code":1355,"language":231,"meta":232,"style":232},"# List all volumes\nskyport docker volume ls\n",[234,1357,1358,1363],{"__ignoreMap":232},[237,1359,1360],{"class":239,"line":240},[237,1361,1362],{"class":243},"# List all volumes\n",[237,1364,1365,1367,1369,1372],{"class":239,"line":247},[237,1366,251],{"class":250},[237,1368,255],{"class":254},[237,1370,1371],{"class":254}," volume",[237,1373,1374],{"class":254}," ls\n",[330,1376,1378],{"id":1377},"create-volumes","Create Volumes",[227,1380,1382],{"className":229,"code":1381,"language":231,"meta":232,"style":232},"# Create named volume\nskyport docker volume create my-data\n\n# Create and use volume\nskyport docker run -d \\\n  -v my-data:\u002Fapp\u002Fdata \\\n  my-app:latest\n",[234,1383,1384,1389,1403,1407,1412,1424,1433],{"__ignoreMap":232},[237,1385,1386],{"class":239,"line":240},[237,1387,1388],{"class":243},"# Create named volume\n",[237,1390,1391,1393,1395,1397,1400],{"class":239,"line":247},[237,1392,251],{"class":250},[237,1394,255],{"class":254},[237,1396,1371],{"class":254},[237,1398,1399],{"class":254}," create",[237,1401,1402],{"class":254}," my-data\n",[237,1404,1405],{"class":239,"line":261},[237,1406,265],{"emptyLinePlaceholder":264},[237,1408,1409],{"class":239,"line":268},[237,1410,1411],{"class":243},"# Create and use volume\n",[237,1413,1414,1416,1418,1420,1422],{"class":239,"line":274},[237,1415,251],{"class":250},[237,1417,255],{"class":254},[237,1419,352],{"class":254},[237,1421,355],{"class":254},[237,1423,381],{"class":380},[237,1425,1426,1428,1431],{"class":239,"line":287},[237,1427,510],{"class":254},[237,1429,1430],{"class":254}," my-data:\u002Fapp\u002Fdata",[237,1432,381],{"class":380},[237,1434,1435],{"class":239,"line":292},[237,1436,1437],{"class":254},"  my-app:latest\n",[330,1439,1441],{"id":1440},"manage-volumes","Manage Volumes",[227,1443,1445],{"className":229,"code":1444,"language":231,"meta":232,"style":232},"# View volume details\nskyport docker volume inspect my-data\n\n# Remove volume\nskyport docker volume rm my-data\n\n# Remove unused volumes\nskyport docker volume prune\n",[234,1446,1447,1452,1464,1468,1473,1485,1489,1494],{"__ignoreMap":232},[237,1448,1449],{"class":239,"line":240},[237,1450,1451],{"class":243},"# View volume details\n",[237,1453,1454,1456,1458,1460,1462],{"class":239,"line":247},[237,1455,251],{"class":250},[237,1457,255],{"class":254},[237,1459,1371],{"class":254},[237,1461,942],{"class":254},[237,1463,1402],{"class":254},[237,1465,1466],{"class":239,"line":261},[237,1467,265],{"emptyLinePlaceholder":264},[237,1469,1470],{"class":239,"line":268},[237,1471,1472],{"class":243},"# Remove volume\n",[237,1474,1475,1477,1479,1481,1483],{"class":239,"line":274},[237,1476,251],{"class":250},[237,1478,255],{"class":254},[237,1480,1371],{"class":254},[237,1482,895],{"class":254},[237,1484,1402],{"class":254},[237,1486,1487],{"class":239,"line":287},[237,1488,265],{"emptyLinePlaceholder":264},[237,1490,1491],{"class":239,"line":292},[237,1492,1493],{"class":243},"# Remove unused volumes\n",[237,1495,1496,1498,1500,1502],{"class":239,"line":298},[237,1497,251],{"class":250},[237,1499,255],{"class":254},[237,1501,1371],{"class":254},[237,1503,1325],{"class":254},[219,1505,1507],{"id":1506},"networks","Networks",[330,1509,1511],{"id":1510},"list-networks","List Networks",[227,1513,1515],{"className":229,"code":1514,"language":231,"meta":232,"style":232},"# List networks\nskyport docker network ls\n",[234,1516,1517,1522],{"__ignoreMap":232},[237,1518,1519],{"class":239,"line":240},[237,1520,1521],{"class":243},"# List networks\n",[237,1523,1524,1526,1528,1531],{"class":239,"line":247},[237,1525,251],{"class":250},[237,1527,255],{"class":254},[237,1529,1530],{"class":254}," network",[237,1532,1374],{"class":254},[330,1534,1536],{"id":1535},"create-networks","Create Networks",[227,1538,1540],{"className":229,"code":1539,"language":231,"meta":232,"style":232},"# Create bridge network\nskyport docker network create my-network\n\n# Create with options\nskyport docker network create \\\n  --driver bridge \\\n  --subnet 172.20.0.0\u002F16 \\\n  my-network\n",[234,1541,1542,1547,1560,1564,1569,1581,1591,1601],{"__ignoreMap":232},[237,1543,1544],{"class":239,"line":240},[237,1545,1546],{"class":243},"# Create bridge network\n",[237,1548,1549,1551,1553,1555,1557],{"class":239,"line":247},[237,1550,251],{"class":250},[237,1552,255],{"class":254},[237,1554,1530],{"class":254},[237,1556,1399],{"class":254},[237,1558,1559],{"class":254}," my-network\n",[237,1561,1562],{"class":239,"line":261},[237,1563,265],{"emptyLinePlaceholder":264},[237,1565,1566],{"class":239,"line":268},[237,1567,1568],{"class":243},"# Create with options\n",[237,1570,1571,1573,1575,1577,1579],{"class":239,"line":274},[237,1572,251],{"class":250},[237,1574,255],{"class":254},[237,1576,1530],{"class":254},[237,1578,1399],{"class":254},[237,1580,381],{"class":380},[237,1582,1583,1586,1589],{"class":239,"line":287},[237,1584,1585],{"class":254},"  --driver",[237,1587,1588],{"class":254}," bridge",[237,1590,381],{"class":380},[237,1592,1593,1596,1599],{"class":239,"line":292},[237,1594,1595],{"class":254},"  --subnet",[237,1597,1598],{"class":254}," 172.20.0.0\u002F16",[237,1600,381],{"class":380},[237,1602,1603],{"class":239,"line":298},[237,1604,1605],{"class":254},"  my-network\n",[330,1607,1609],{"id":1608},"connect-containers","Connect Containers",[227,1611,1613],{"className":229,"code":1612,"language":231,"meta":232,"style":232},"# Run container on network\nskyport docker run -d \\\n  --network my-network \\\n  --name app \\\n  app:latest\n\n# Connect existing container\nskyport docker network connect my-network existing-container\n\n# Disconnect container\nskyport docker network disconnect my-network container-name\n",[234,1614,1615,1620,1632,1642,1650,1655,1659,1664,1680,1684,1689],{"__ignoreMap":232},[237,1616,1617],{"class":239,"line":240},[237,1618,1619],{"class":243},"# Run container on network\n",[237,1621,1622,1624,1626,1628,1630],{"class":239,"line":247},[237,1623,251],{"class":250},[237,1625,255],{"class":254},[237,1627,352],{"class":254},[237,1629,355],{"class":254},[237,1631,381],{"class":380},[237,1633,1634,1637,1640],{"class":239,"line":261},[237,1635,1636],{"class":254},"  --network",[237,1638,1639],{"class":254}," my-network",[237,1641,381],{"class":380},[237,1643,1644,1646,1648],{"class":239,"line":268},[237,1645,386],{"class":254},[237,1647,437],{"class":254},[237,1649,381],{"class":380},[237,1651,1652],{"class":239,"line":274},[237,1653,1654],{"class":254},"  app:latest\n",[237,1656,1657],{"class":239,"line":287},[237,1658,265],{"emptyLinePlaceholder":264},[237,1660,1661],{"class":239,"line":292},[237,1662,1663],{"class":243},"# Connect existing container\n",[237,1665,1666,1668,1670,1672,1675,1677],{"class":239,"line":298},[237,1667,251],{"class":250},[237,1669,255],{"class":254},[237,1671,1530],{"class":254},[237,1673,1674],{"class":254}," connect",[237,1676,1639],{"class":254},[237,1678,1679],{"class":254}," existing-container\n",[237,1681,1682],{"class":239,"line":313},[237,1683,265],{"emptyLinePlaceholder":264},[237,1685,1686],{"class":239,"line":413},[237,1687,1688],{"class":243},"# Disconnect container\n",[237,1690,1691,1693,1695,1697,1700,1702],{"class":239,"line":419},[237,1692,251],{"class":250},[237,1694,255],{"class":254},[237,1696,1530],{"class":254},[237,1698,1699],{"class":254}," disconnect",[237,1701,1639],{"class":254},[237,1703,702],{"class":254},[219,1705,1707],{"id":1706},"common-patterns","Common Patterns",[330,1709,1711],{"id":1710},"nginx-reverse-proxy","Nginx Reverse Proxy",[227,1713,1715],{"className":229,"code":1714,"language":231,"meta":232,"style":232},"# Pull Nginx\nskyport docker pull nginx:latest\n\n# Run Nginx\nskyport docker run -d \\\n  --name nginx \\\n  -p 80:80 \\\n  -p 443:443 \\\n  -v \u002Fetc\u002Fnginx\u002Fconf.d:\u002Fetc\u002Fnginx\u002Fconf.d \\\n  -v \u002Fetc\u002Fletsencrypt:\u002Fetc\u002Fletsencrypt \\\n  nginx:latest\n",[234,1716,1717,1722,1732,1736,1741,1753,1762,1771,1780,1789,1798],{"__ignoreMap":232},[237,1718,1719],{"class":239,"line":240},[237,1720,1721],{"class":243},"# Pull Nginx\n",[237,1723,1724,1726,1728,1730],{"class":239,"line":247},[237,1725,251],{"class":250},[237,1727,255],{"class":254},[237,1729,1140],{"class":254},[237,1731,358],{"class":254},[237,1733,1734],{"class":239,"line":261},[237,1735,265],{"emptyLinePlaceholder":264},[237,1737,1738],{"class":239,"line":268},[237,1739,1740],{"class":243},"# Run Nginx\n",[237,1742,1743,1745,1747,1749,1751],{"class":239,"line":274},[237,1744,251],{"class":250},[237,1746,255],{"class":254},[237,1748,352],{"class":254},[237,1750,355],{"class":254},[237,1752,381],{"class":380},[237,1754,1755,1757,1760],{"class":239,"line":287},[237,1756,386],{"class":254},[237,1758,1759],{"class":254}," nginx",[237,1761,381],{"class":380},[237,1763,1764,1766,1769],{"class":239,"line":292},[237,1765,396],{"class":254},[237,1767,1768],{"class":254}," 80:80",[237,1770,381],{"class":380},[237,1772,1773,1775,1778],{"class":239,"line":298},[237,1774,396],{"class":254},[237,1776,1777],{"class":254}," 443:443",[237,1779,381],{"class":380},[237,1781,1782,1784,1787],{"class":239,"line":313},[237,1783,510],{"class":254},[237,1785,1786],{"class":254}," \u002Fetc\u002Fnginx\u002Fconf.d:\u002Fetc\u002Fnginx\u002Fconf.d",[237,1788,381],{"class":380},[237,1790,1791,1793,1796],{"class":239,"line":413},[237,1792,510],{"class":254},[237,1794,1795],{"class":254}," \u002Fetc\u002Fletsencrypt:\u002Fetc\u002Fletsencrypt",[237,1797,381],{"class":380},[237,1799,1800],{"class":239,"line":419},[237,1801,406],{"class":254},[330,1803,1805],{"id":1804},"postgresql-database","PostgreSQL Database",[227,1807,1809],{"className":229,"code":1808,"language":231,"meta":232,"style":232},"# Create volume for data persistence\nskyport docker volume create postgres-data\n\n# Run PostgreSQL\nskyport docker run -d \\\n  --name postgres \\\n  -e POSTGRES_PASSWORD=secure_password \\\n  -e POSTGRES_DB=myapp \\\n  -v postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata \\\n  -p 5432:5432 \\\n  postgres:15\n",[234,1810,1811,1816,1829,1833,1838,1850,1859,1868,1877,1885,1894],{"__ignoreMap":232},[237,1812,1813],{"class":239,"line":240},[237,1814,1815],{"class":243},"# Create volume for data persistence\n",[237,1817,1818,1820,1822,1824,1826],{"class":239,"line":247},[237,1819,251],{"class":250},[237,1821,255],{"class":254},[237,1823,1371],{"class":254},[237,1825,1399],{"class":254},[237,1827,1828],{"class":254}," postgres-data\n",[237,1830,1831],{"class":239,"line":261},[237,1832,265],{"emptyLinePlaceholder":264},[237,1834,1835],{"class":239,"line":268},[237,1836,1837],{"class":243},"# Run PostgreSQL\n",[237,1839,1840,1842,1844,1846,1848],{"class":239,"line":274},[237,1841,251],{"class":250},[237,1843,255],{"class":254},[237,1845,352],{"class":254},[237,1847,355],{"class":254},[237,1849,381],{"class":380},[237,1851,1852,1854,1857],{"class":239,"line":287},[237,1853,386],{"class":254},[237,1855,1856],{"class":254}," postgres",[237,1858,381],{"class":380},[237,1860,1861,1863,1866],{"class":239,"line":292},[237,1862,445],{"class":254},[237,1864,1865],{"class":254}," POSTGRES_PASSWORD=secure_password",[237,1867,381],{"class":380},[237,1869,1870,1872,1875],{"class":239,"line":298},[237,1871,445],{"class":254},[237,1873,1874],{"class":254}," POSTGRES_DB=myapp",[237,1876,381],{"class":380},[237,1878,1879,1881,1883],{"class":239,"line":313},[237,1880,510],{"class":254},[237,1882,513],{"class":254},[237,1884,381],{"class":380},[237,1886,1887,1889,1892],{"class":239,"line":413},[237,1888,396],{"class":254},[237,1890,1891],{"class":254}," 5432:5432",[237,1893,381],{"class":380},[237,1895,1896],{"class":239,"line":419},[237,1897,521],{"class":254},[330,1899,1901],{"id":1900},"nodejs-application","Node.js Application",[227,1903,1905],{"className":229,"code":1904,"language":231,"meta":232,"style":232},"# Build image\nskyport docker build -t my-app:1.0.0 .\n\n# Run with environment\nskyport docker run -d \\\n  --name my-app \\\n  -e NODE_ENV=production \\\n  -e DATABASE_URL=postgresql:\u002F\u002Fuser:pass@postgres:5432\u002Fdb \\\n  -p 3000:3000 \\\n  --restart unless-stopped \\\n  my-app:1.0.0\n",[234,1906,1907,1912,1926,1930,1934,1946,1955,1963,1972,1981,1991],{"__ignoreMap":232},[237,1908,1909],{"class":239,"line":240},[237,1910,1911],{"class":243},"# Build image\n",[237,1913,1914,1916,1918,1920,1922,1924],{"class":239,"line":247},[237,1915,251],{"class":250},[237,1917,255],{"class":254},[237,1919,1185],{"class":254},[237,1921,1188],{"class":254},[237,1923,1191],{"class":254},[237,1925,1194],{"class":254},[237,1927,1928],{"class":239,"line":261},[237,1929,265],{"emptyLinePlaceholder":264},[237,1931,1932],{"class":239,"line":268},[237,1933,1049],{"class":243},[237,1935,1936,1938,1940,1942,1944],{"class":239,"line":274},[237,1937,251],{"class":250},[237,1939,255],{"class":254},[237,1941,352],{"class":254},[237,1943,355],{"class":254},[237,1945,381],{"class":380},[237,1947,1948,1950,1953],{"class":239,"line":287},[237,1949,386],{"class":254},[237,1951,1952],{"class":254}," my-app",[237,1954,381],{"class":380},[237,1956,1957,1959,1961],{"class":239,"line":292},[237,1958,445],{"class":254},[237,1960,448],{"class":254},[237,1962,381],{"class":380},[237,1964,1965,1967,1970],{"class":239,"line":298},[237,1966,445],{"class":254},[237,1968,1969],{"class":254}," DATABASE_URL=postgresql:\u002F\u002Fuser:pass@postgres:5432\u002Fdb",[237,1971,381],{"class":380},[237,1973,1974,1976,1979],{"class":239,"line":313},[237,1975,396],{"class":254},[237,1977,1978],{"class":254}," 3000:3000",[237,1980,381],{"class":380},[237,1982,1983,1986,1989],{"class":239,"line":413},[237,1984,1985],{"class":254},"  --restart",[237,1987,1988],{"class":254}," unless-stopped",[237,1990,381],{"class":380},[237,1992,1993],{"class":239,"line":419},[237,1994,1995],{"class":254},"  my-app:1.0.0\n",[330,1997,1999],{"id":1998},"multi-container-setup","Multi-container Setup",[227,2001,2003],{"className":229,"code":2002,"language":231,"meta":232,"style":232},"# Create network\nskyport docker network create my-app-network\n\n# Start database\nskyport docker run -d \\\n  --name postgres \\\n  --network my-app-network \\\n  -e POSTGRES_PASSWORD=pass \\\n  -v postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata \\\n  postgres:15\n\n# Start Redis\nskyport docker run -d \\\n  --name redis \\\n  --network my-app-network \\\n  redis:latest\n\n# Start application\nskyport docker run -d \\\n  --name app \\\n  --network my-app-network \\\n  -e DATABASE_URL=postgresql:\u002F\u002Fpostgres:pass@postgres:5432\u002Fpostgres \\\n  -e REDIS_URL=redis:\u002F\u002Fredis:6379 \\\n  -p 3000:3000 \\\n  app:latest\n",[234,2004,2005,2010,2023,2027,2032,2044,2052,2061,2070,2078,2082,2086,2091,2103,2112,2120,2125,2129,2134,2146,2154,2162,2171,2180,2188],{"__ignoreMap":232},[237,2006,2007],{"class":239,"line":240},[237,2008,2009],{"class":243},"# Create network\n",[237,2011,2012,2014,2016,2018,2020],{"class":239,"line":247},[237,2013,251],{"class":250},[237,2015,255],{"class":254},[237,2017,1530],{"class":254},[237,2019,1399],{"class":254},[237,2021,2022],{"class":254}," my-app-network\n",[237,2024,2025],{"class":239,"line":261},[237,2026,265],{"emptyLinePlaceholder":264},[237,2028,2029],{"class":239,"line":268},[237,2030,2031],{"class":243},"# Start database\n",[237,2033,2034,2036,2038,2040,2042],{"class":239,"line":274},[237,2035,251],{"class":250},[237,2037,255],{"class":254},[237,2039,352],{"class":254},[237,2041,355],{"class":254},[237,2043,381],{"class":380},[237,2045,2046,2048,2050],{"class":239,"line":287},[237,2047,386],{"class":254},[237,2049,1856],{"class":254},[237,2051,381],{"class":380},[237,2053,2054,2056,2059],{"class":239,"line":292},[237,2055,1636],{"class":254},[237,2057,2058],{"class":254}," my-app-network",[237,2060,381],{"class":380},[237,2062,2063,2065,2068],{"class":239,"line":298},[237,2064,445],{"class":254},[237,2066,2067],{"class":254}," POSTGRES_PASSWORD=pass",[237,2069,381],{"class":380},[237,2071,2072,2074,2076],{"class":239,"line":313},[237,2073,510],{"class":254},[237,2075,513],{"class":254},[237,2077,381],{"class":380},[237,2079,2080],{"class":239,"line":413},[237,2081,521],{"class":254},[237,2083,2084],{"class":239,"line":419},[237,2085,265],{"emptyLinePlaceholder":264},[237,2087,2088],{"class":239,"line":432},[237,2089,2090],{"class":243},"# Start Redis\n",[237,2092,2093,2095,2097,2099,2101],{"class":239,"line":442},[237,2094,251],{"class":250},[237,2096,255],{"class":254},[237,2098,352],{"class":254},[237,2100,355],{"class":254},[237,2102,381],{"class":380},[237,2104,2105,2107,2110],{"class":239,"line":453},[237,2106,386],{"class":254},[237,2108,2109],{"class":254}," redis",[237,2111,381],{"class":380},[237,2113,2114,2116,2118],{"class":239,"line":467},[237,2115,1636],{"class":254},[237,2117,2058],{"class":254},[237,2119,381],{"class":380},[237,2121,2122],{"class":239,"line":473},[237,2123,2124],{"class":254},"  redis:latest\n",[237,2126,2127],{"class":239,"line":478},[237,2128,265],{"emptyLinePlaceholder":264},[237,2130,2131],{"class":239,"line":484},[237,2132,2133],{"class":243},"# Start application\n",[237,2135,2136,2138,2140,2142,2144],{"class":239,"line":497},[237,2137,251],{"class":250},[237,2139,255],{"class":254},[237,2141,352],{"class":254},[237,2143,355],{"class":254},[237,2145,381],{"class":380},[237,2147,2148,2150,2152],{"class":239,"line":507},[237,2149,386],{"class":254},[237,2151,437],{"class":254},[237,2153,381],{"class":380},[237,2155,2156,2158,2160],{"class":239,"line":518},[237,2157,1636],{"class":254},[237,2159,2058],{"class":254},[237,2161,381],{"class":380},[237,2163,2164,2166,2169],{"class":239,"line":524},[237,2165,445],{"class":254},[237,2167,2168],{"class":254}," DATABASE_URL=postgresql:\u002F\u002Fpostgres:pass@postgres:5432\u002Fpostgres",[237,2170,381],{"class":380},[237,2172,2173,2175,2178],{"class":239,"line":529},[237,2174,445],{"class":254},[237,2176,2177],{"class":254}," REDIS_URL=redis:\u002F\u002Fredis:6379",[237,2179,381],{"class":380},[237,2181,2182,2184,2186],{"class":239,"line":535},[237,2183,396],{"class":254},[237,2185,1978],{"class":254},[237,2187,381],{"class":380},[237,2189,2190],{"class":239,"line":548},[237,2191,1654],{"class":254},[219,2193,2195],{"id":2194},"best-practices","Best Practices",[2197,2198,2199,2203,2206,2209,2212,2215,2218],"ul",{},[2200,2201,2202],"li",{},"Always mount volumes for persistent data",[2200,2204,2205],{},"Use health checks for critical applications",[2200,2207,2208],{},"Set resource limits to prevent system overload",[2200,2210,2211],{},"Use named volumes instead of bind mounts when possible",[2200,2213,2214],{},"Enable automatic restart policies",[2200,2216,2217],{},"Use environment variables for configuration",[2200,2219,2220],{},"Don't run as root in containers when possible",[2222,2223],"hr",{},[215,2225,2226,2230,2231,2234,2235],{},[2227,2228,2229],"strong",{},"Next",": ",[2232,2233,99],"a",{"href":100}," | ",[2232,2236,103],{"href":104},[2238,2239,2240],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":232,"searchDepth":247,"depth":247,"links":2242},[2243,2244,2247,2253,2259,2264,2269,2275],{"id":221,"depth":247,"text":222},{"id":327,"depth":247,"text":328,"children":2245},[2246],{"id":332,"depth":261,"text":333},{"id":675,"depth":247,"text":676,"children":2248},[2249,2250,2251,2252],{"id":679,"depth":261,"text":680},{"id":775,"depth":261,"text":776},{"id":922,"depth":261,"text":923},{"id":987,"depth":261,"text":988},{"id":1071,"depth":247,"text":1072,"children":2254},[2255,2256,2257,2258],{"id":1075,"depth":261,"text":1076},{"id":1120,"depth":261,"text":1121},{"id":1165,"depth":261,"text":1166},{"id":1281,"depth":261,"text":1282},{"id":1347,"depth":247,"text":1348,"children":2260},[2261,2262,2263],{"id":1351,"depth":261,"text":1352},{"id":1377,"depth":261,"text":1378},{"id":1440,"depth":261,"text":1441},{"id":1506,"depth":247,"text":1507,"children":2265},[2266,2267,2268],{"id":1510,"depth":261,"text":1511},{"id":1535,"depth":261,"text":1536},{"id":1608,"depth":261,"text":1609},{"id":1706,"depth":247,"text":1707,"children":2270},[2271,2272,2273,2274],{"id":1710,"depth":261,"text":1711},{"id":1804,"depth":261,"text":1805},{"id":1900,"depth":261,"text":1901},{"id":1998,"depth":261,"text":1999},{"id":2194,"depth":247,"text":2195},"Manage Docker containers with SkyPort","md",null,{},{"title":95,"description":2276},"XH9jHGXEOu6gDOKQslR-p0rleAaLrFVYhs_Uqagx4sM",[2283,2285],{"title":86,"path":87,"stem":88,"description":2284,"children":-1},"Terminal User Interface for SkyPort",{"title":99,"path":100,"stem":101,"description":2286,"children":-1},"Manage Docker images with SkyPort",1778858459265]