[{"data":1,"prerenderedAt":946},["ShallowReactive",2],{"navigation":3,"/docs/deployment-and-production/packaging-your-app-for-deployment":221,"/docs/deployment-and-production/packaging-your-app-for-deployment-surround":941},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","/docs","docs",[9,12,56,85,132,153,178,195,208],{"title":10,"path":6,"stem":11},"","docs/index",{"title":13,"path":14,"stem":15,"children":16,"icon":55},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[17,19,23,27,31,35,39,43,47,51],{"title":18,"path":14,"stem":15},"Introduction",{"title":20,"path":21,"stem":22},"Container Basics","/docs/getting-started/container-basics","docs/1.getting-started/2.container-basics",{"title":24,"path":25,"stem":26},"Installation","/docs/getting-started/installation","docs/1.getting-started/3.installation",{"title":28,"path":29,"stem":30},"These Images vs Others","/docs/getting-started/these-images-vs-others","docs/1.getting-started/4.these-images-vs-others",{"title":32,"path":33,"stem":34},"Choosing an Image","/docs/getting-started/choosing-an-image","docs/1.getting-started/5.choosing-an-image",{"title":36,"path":37,"stem":38},"Default Configurations","/docs/getting-started/default-configurations","docs/1.getting-started/6.default-configurations",{"title":40,"path":41,"stem":42},"Upgrade Guide","/docs/getting-started/upgrade-guide","docs/1.getting-started/7.upgrade-guide",{"title":44,"path":45,"stem":46},"Changelog","/docs/getting-started/changelog","docs/1.getting-started/8.changelog",{"title":48,"path":49,"stem":50},"About","/docs/getting-started/about","docs/1.getting-started/9.about",{"title":52,"path":53,"stem":54},"Contributing","/docs/getting-started/contributing","docs/1.getting-started/99.contributing",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Image Variations","/docs/image-variations","docs/2.image-variations",[61,65,69,73,77,81],{"title":62,"path":63,"stem":64},"CLI","/docs/image-variations/cli","docs/2.image-variations/cli",{"title":66,"path":67,"stem":68},"FPM","/docs/image-variations/fpm","docs/2.image-variations/fpm",{"title":70,"path":71,"stem":72},"FPM-Apache","/docs/image-variations/fpm-apache","docs/2.image-variations/fpm-apache",{"title":74,"path":75,"stem":76},"FPM-NGINX","/docs/image-variations/fpm-nginx","docs/2.image-variations/fpm-nginx",{"title":78,"path":79,"stem":80},"FrankenPHP","/docs/image-variations/frankenphp","docs/2.image-variations/frankenphp",{"title":82,"path":83,"stem":84},"Unit (Deprecated)","/docs/image-variations/unit","docs/2.image-variations/unit",{"title":86,"path":87,"stem":88,"children":89,"page":55},"Framework Guides","/docs/framework-guides","docs/3.framework-guides",[90,123],{"title":91,"icon":55,"defaultOpen":55,"path":92,"stem":93,"children":94,"page":55},"Laravel","/docs/framework-guides/laravel","docs/3.framework-guides/1.laravel",[95,99,103,107,111,115,119],{"title":96,"path":97,"stem":98},"Automations","/docs/framework-guides/laravel/automations","docs/3.framework-guides/1.laravel/1.automations",{"title":100,"path":101,"stem":102},"Task Scheduler","/docs/framework-guides/laravel/task-scheduler","docs/3.framework-guides/1.laravel/2.task-scheduler",{"title":104,"path":105,"stem":106},"Queue","/docs/framework-guides/laravel/queue","docs/3.framework-guides/1.laravel/3.queue",{"title":108,"path":109,"stem":110},"Horizon","/docs/framework-guides/laravel/horizon","docs/3.framework-guides/1.laravel/4.horizon",{"title":112,"path":113,"stem":114},"Reverb","/docs/framework-guides/laravel/reverb","docs/3.framework-guides/1.laravel/4.reverb",{"title":116,"path":117,"stem":118},"Nightwatch","/docs/framework-guides/laravel/nightwatch","docs/3.framework-guides/1.laravel/5.nightwatch",{"title":120,"path":121,"stem":122},"Octane","/docs/framework-guides/laravel/octane","docs/3.framework-guides/1.laravel/octane",{"title":124,"icon":55,"defaultOpen":55,"path":125,"stem":126,"children":127,"page":55},"WordPress","/docs/framework-guides/wordpress","docs/3.framework-guides/2.wordpress",[128],{"title":129,"path":130,"stem":131},"Using Docker with WordPress","/docs/framework-guides/wordpress/using-wordpress-with-docker","docs/3.framework-guides/2.wordpress/4.using-wordpress-with-docker",{"title":133,"path":134,"stem":135,"children":136,"page":55},"Deployment And Production","/docs/deployment-and-production","docs/4.deployment-and-production",[137,141,145,149],{"title":138,"path":139,"stem":140},"Development to Production","/docs/deployment-and-production/development-to-production","docs/4.deployment-and-production/2.development-to-production",{"title":142,"path":143,"stem":144},"Packaging Your App for Deployment","/docs/deployment-and-production/packaging-your-app-for-deployment","docs/4.deployment-and-production/3.packaging-your-app-for-deployment",{"title":146,"path":147,"stem":148},"Configuring SSL","/docs/deployment-and-production/configuring-ssl","docs/4.deployment-and-production/4.configuring-ssl",{"title":150,"path":151,"stem":152},"Choosing a Host","/docs/deployment-and-production/choosing-a-host","docs/4.deployment-and-production/5.choosing-a-host",{"title":154,"icon":55,"defaultOpen":55,"path":155,"stem":156,"children":157,"page":55},"Advanced Guides","/docs/guide","docs/5.guide",[158,162,166,170,174],{"title":159,"path":160,"stem":161},"Migrating from official PHP images","/docs/guide/migrating-from-official-php-images","docs/5.guide/1.migrating-from-official-php-images",{"title":163,"path":164,"stem":165},"Using Healthchecks With Laravel","/docs/guide/using-healthchecks-with-laravel","docs/5.guide/2.using-healthchecks-with-laravel",{"title":167,"path":168,"stem":169},"Using S6 Overlay","/docs/guide/using-s6-overlay","docs/5.guide/2.using-s6-overlay",{"title":171,"path":172,"stem":173},"Understanding File Permissions","/docs/guide/understanding-file-permissions","docs/5.guide/3.understanding-file-permissions",{"title":175,"path":176,"stem":177},"Configuring Trusted Proxies","/docs/guide/configuring-trusted-proxies","docs/5.guide/4.configuring-trusted-proxies",{"title":179,"icon":55,"defaultOpen":55,"path":180,"stem":181,"children":182,"page":55},"Customization","/docs/customizing-the-image","docs/6.customizing-the-image",[183,187,191],{"title":184,"path":185,"stem":186},"Changing php.ini settings","/docs/customizing-the-image/changing-common-php-settings","docs/6.customizing-the-image/1.changing-common-php-settings",{"title":188,"path":189,"stem":190},"Installing PHP extensions","/docs/customizing-the-image/installing-additional-php-extensions","docs/6.customizing-the-image/2.installing-additional-php-extensions",{"title":192,"path":193,"stem":194},"Adding Start Up Scripts","/docs/customizing-the-image/adding-your-own-start-up-scripts","docs/6.customizing-the-image/3.adding-your-own-start-up-scripts",{"title":196,"path":197,"stem":198,"children":199,"page":55},"Troubleshooting","/docs/troubleshooting","docs/7.troubleshooting",[200,204],{"title":201,"path":202,"stem":203},"Common Issues","/docs/troubleshooting/common-issues","docs/7.troubleshooting/1.common-issues",{"title":205,"path":206,"stem":207},"Getting Help","/docs/troubleshooting/getting-help","docs/7.troubleshooting/2.getting-help",{"title":209,"path":210,"stem":211,"children":212,"page":55},"Reference","/docs/reference","docs/8.reference",[213,217],{"title":214,"path":215,"stem":216},"Environment Variable Specification","/docs/reference/environment-variable-specification","docs/8.reference/1.environment-variable-specification",{"title":218,"path":219,"stem":220},"Command Reference","/docs/reference/command-reference","docs/8.reference/2.command-reference",{"id":222,"title":142,"body":223,"description":936,"extension":910,"links":937,"meta":938,"navigation":387,"path":143,"redirect":937,"seo":939,"stem":144,"__hash__":940},"docs/docs/4.deployment-and-production/3.packaging-your-app-for-deployment.md",{"type":224,"value":225,"toc":917},"minimark",[226,233,238,241,246,259,338,341,354,358,366,402,405,419,423,429,441,445,448,530,533,546,550,553,580,587,591,594,638,641,662,665,669,673,680,712,716,719,735,746,750,753,780,783,787,790,876,879,890,894,897,913],[227,228,229],"lead-p",{},[230,231,232],"p",{},"In development, you mount your code as a volume for instant changes. In production, you build your code directly into the image for security, reliability, and portability. This guide shows you how to make that transition.",[234,235,237],"h2",{"id":236},"development-vs-production-images","Development vs production images",[230,239,240],{},"Let's revisit what you've been doing in development and why it changes for production.",[242,243,245],"h3",{"id":244},"what-youve-been-doing-development","What you've been doing (development)",[230,247,248,249,253,254,258],{},"In the ",[250,251,252],"a",{"href":25},"installation guide",", your ",[255,256,257],"code",{},"compose.yml"," looked like this:",[260,261,265],"pre",{"className":262,"code":263,"filename":257,"language":264,"meta":10,"style":10},"language-yml shiki shiki-themes github-dark","services:\n  php:\n    image: serversideup/php:8.5-fpm-nginx\n    ports:\n      - 80:8080\n    volumes:\n      - ./:/var/www/html  # Your code mounted as a volume\n","yml",[255,266,267,280,288,301,309,318,326],{"__ignoreMap":10},[268,269,272,276],"span",{"class":270,"line":271},"line",1,[268,273,275],{"class":274},"s4JwU","services",[268,277,279],{"class":278},"s95oV",":\n",[268,281,283,286],{"class":270,"line":282},2,[268,284,285],{"class":274},"  php",[268,287,279],{"class":278},[268,289,291,294,297],{"class":270,"line":290},3,[268,292,293],{"class":274},"    image",[268,295,296],{"class":278},": ",[268,298,300],{"class":299},"sU2Wk","serversideup/php:8.5-fpm-nginx\n",[268,302,304,307],{"class":270,"line":303},4,[268,305,306],{"class":274},"    ports",[268,308,279],{"class":278},[268,310,312,315],{"class":270,"line":311},5,[268,313,314],{"class":278},"      - ",[268,316,317],{"class":299},"80:8080\n",[268,319,321,324],{"class":270,"line":320},6,[268,322,323],{"class":274},"    volumes",[268,325,279],{"class":278},[268,327,329,331,334],{"class":270,"line":328},7,[268,330,314],{"class":278},[268,332,333],{"class":299},"./:/var/www/html",[268,335,337],{"class":336},"sAwPA","  # Your code mounted as a volume\n",[230,339,340],{},"This works great for development because:",[342,343,344,348,351],"ul",{},[345,346,347],"li",{},"You edit files on your computer and see changes instantly",[345,349,350],{},"No rebuild needed between changes",[345,352,353],{},"Fast iteration and debugging",[242,355,357],{"id":356},"what-you-need-for-production","What you need for production",[230,359,360,361,365],{},"For production, you'll create a ",[362,363,364],"strong",{},"custom image"," that includes your application code:",[260,367,372],{"className":368,"code":369,"filename":370,"language":371,"meta":10,"style":10},"language-dockerfile shiki shiki-themes github-dark","FROM serversideup/php:8.5-fpm-nginx\n\n# Copy your application code into the image\nCOPY --chown=www-data:www-data . /var/www/html\n","Dockerfile","dockerfile",[255,373,374,383,389,394],{"__ignoreMap":10},[268,375,376,380],{"class":270,"line":271},[268,377,379],{"class":378},"snl16","FROM",[268,381,382],{"class":278}," serversideup/php:8.5-fpm-nginx\n",[268,384,385],{"class":270,"line":282},[268,386,388],{"emptyLinePlaceholder":387},true,"\n",[268,390,391],{"class":270,"line":290},[268,392,393],{"class":336},"# Copy your application code into the image\n",[268,395,396,399],{"class":270,"line":303},[268,397,398],{"class":378},"COPY",[268,400,401],{"class":278}," --chown=www-data:www-data . /var/www/html\n",[230,403,404],{},"This is better for production because:",[342,406,407,410,413,416],{},[345,408,409],{},"Your code can't be accidentally modified or deleted",[345,411,412],{},"The image is completely portable and self-contained",[345,414,415],{},"You can version and tag each release",[345,417,418],{},"Deployments are atomic — the new version either works or it doesn't",[234,420,422],{"id":421},"creating-your-first-production-dockerfile","Creating your first production Dockerfile",[230,424,425,426,428],{},"Let's create a proper production Dockerfile step by step. Start by creating a file called ",[255,427,370],{}," in your project root.",[430,431,432],"tip",{},[230,433,434,435,437,438,440],{},"The ",[255,436,370],{}," should live at the root of your project, in the same directory as your ",[255,439,257],{},".",[242,442,444],{"id":443},"basic-php-application","Basic PHP application",[230,446,447],{},"For a simple PHP application, your Dockerfile might look like this:",[260,449,451],{"className":368,"code":450,"filename":370,"language":371,"meta":10,"style":10},"FROM serversideup/php:8.5-fpm-nginx\n\n# Switch to root to install dependencies and copy files\nUSER root\n\n# Install PHP dependencies\nRUN install-php-extensions intl bcmath\n\n# Switch back to non-root user for security\nUSER www-data\n\n# Copy application files with correct ownership\nCOPY --chown=www-data:www-data . /var/www/html\n",[255,452,453,459,463,468,476,480,485,493,498,504,512,517,523],{"__ignoreMap":10},[268,454,455,457],{"class":270,"line":271},[268,456,379],{"class":378},[268,458,382],{"class":278},[268,460,461],{"class":270,"line":282},[268,462,388],{"emptyLinePlaceholder":387},[268,464,465],{"class":270,"line":290},[268,466,467],{"class":336},"# Switch to root to install dependencies and copy files\n",[268,469,470,473],{"class":270,"line":303},[268,471,472],{"class":378},"USER",[268,474,475],{"class":278}," root\n",[268,477,478],{"class":270,"line":311},[268,479,388],{"emptyLinePlaceholder":387},[268,481,482],{"class":270,"line":320},[268,483,484],{"class":336},"# Install PHP dependencies\n",[268,486,487,490],{"class":270,"line":328},[268,488,489],{"class":378},"RUN",[268,491,492],{"class":278}," install-php-extensions intl bcmath\n",[268,494,496],{"class":270,"line":495},8,[268,497,388],{"emptyLinePlaceholder":387},[268,499,501],{"class":270,"line":500},9,[268,502,503],{"class":336},"# Switch back to non-root user for security\n",[268,505,507,509],{"class":270,"line":506},10,[268,508,472],{"class":378},[268,510,511],{"class":278}," www-data\n",[268,513,515],{"class":270,"line":514},11,[268,516,388],{"emptyLinePlaceholder":387},[268,518,520],{"class":270,"line":519},12,[268,521,522],{"class":336},"# Copy application files with correct ownership\n",[268,524,526,528],{"class":270,"line":525},13,[268,527,398],{"class":378},[268,529,401],{"class":278},[230,531,532],{},"That's it! This takes your application code and bakes it into the image.",[534,535,536],"note",{},[230,537,538,539,542,543,440],{},"Notice we use ",[255,540,541],{},"--chown=www-data:www-data"," when copying files. This ensures the web server can read your files. Learn more in our ",[250,544,545],{"href":172},"file permissions guide",[234,547,549],{"id":548},"building-your-image","Building your image",[230,551,552],{},"Once you have your Dockerfile, build your image with:",[260,554,559],{"className":555,"code":556,"filename":557,"language":558,"meta":10,"style":10},"language-bash shiki shiki-themes github-dark","docker build -t my-app:latest .\n","Terminal","bash",[255,560,561],{"__ignoreMap":10},[268,562,563,567,570,574,577],{"class":270,"line":271},[268,564,566],{"class":565},"svObZ","docker",[268,568,569],{"class":299}," build",[268,571,573],{"class":572},"sDLfK"," -t",[268,575,576],{"class":299}," my-app:latest",[268,578,579],{"class":299}," .\n",[230,581,582,583,586],{},"This creates an image tagged as ",[255,584,585],{},"my-app:latest"," that contains your application code.",[242,588,590],{"id":589},"testing-your-production-image","Testing your production image",[230,592,593],{},"Before deploying, test your production image locally:",[260,595,598],{"className":262,"code":596,"filename":597,"language":264,"meta":10,"style":10},"services:\n  php:\n    # Use your custom image instead of the base image\n    image: my-app:latest\n    ports:\n      - 80:8080\n","compose.prod.yml",[255,599,600,606,612,617,626,632],{"__ignoreMap":10},[268,601,602,604],{"class":270,"line":271},[268,603,275],{"class":274},[268,605,279],{"class":278},[268,607,608,610],{"class":270,"line":282},[268,609,285],{"class":274},[268,611,279],{"class":278},[268,613,614],{"class":270,"line":290},[268,615,616],{"class":336},"    # Use your custom image instead of the base image\n",[268,618,619,621,623],{"class":270,"line":303},[268,620,293],{"class":274},[268,622,296],{"class":278},[268,624,625],{"class":299},"my-app:latest\n",[268,627,628,630],{"class":270,"line":311},[268,629,306],{"class":274},[268,631,279],{"class":278},[268,633,634,636],{"class":270,"line":320},[268,635,314],{"class":278},[268,637,317],{"class":299},[230,639,640],{},"Then run:",[260,642,644],{"className":555,"code":643,"filename":557,"language":558,"meta":10,"style":10},"docker compose -f compose.prod.yml up\n",[255,645,646],{"__ignoreMap":10},[268,647,648,650,653,656,659],{"class":270,"line":271},[268,649,566],{"class":565},[268,651,652],{"class":299}," compose",[268,654,655],{"class":572}," -f",[268,657,658],{"class":299}," compose.prod.yml",[268,660,661],{"class":299}," up\n",[230,663,664],{},"This lets you verify your production image works correctly before deploying to real servers.",[234,666,668],{"id":667},"best-practices-for-production-images","Best practices for production images",[242,670,672],{"id":671},"_1-use-specific-image-tags","1. Use specific image tags",[230,674,675,676,679],{},"Don't use ",[255,677,678],{},"latest"," tags in production. Use specific versions:",[260,681,683],{"className":368,"code":682,"language":371,"meta":10,"style":10},"# Bad - version can change unexpectedly\nFROM serversideup/php:latest\n\n# Good - explicitly versioned\nFROM serversideup/php:8.5-fpm-nginx\n",[255,684,685,690,697,701,706],{"__ignoreMap":10},[268,686,687],{"class":270,"line":271},[268,688,689],{"class":336},"# Bad - version can change unexpectedly\n",[268,691,692,694],{"class":270,"line":282},[268,693,379],{"class":378},[268,695,696],{"class":278}," serversideup/php:latest\n",[268,698,699],{"class":270,"line":290},[268,700,388],{"emptyLinePlaceholder":387},[268,702,703],{"class":270,"line":303},[268,704,705],{"class":336},"# Good - explicitly versioned\n",[268,707,708,710],{"class":270,"line":311},[268,709,379],{"class":378},[268,711,382],{"class":278},[242,713,715],{"id":714},"_2-run-as-non-root-user","2. Run as non-root user",[230,717,718],{},"Always run your application as a non-root user for security:",[260,720,722],{"className":368,"code":721,"language":371,"meta":10,"style":10},"# Our images default to www-data, but explicitly switch back if you use root\nUSER www-data\n",[255,723,724,729],{"__ignoreMap":10},[268,725,726],{"class":270,"line":271},[268,727,728],{"class":336},"# Our images default to www-data, but explicitly switch back if you use root\n",[268,730,731,733],{"class":270,"line":282},[268,732,472],{"class":378},[268,734,511],{"class":278},[230,736,737,738,741,742,745],{},"All ",[255,739,740],{},"serversideup/php"," images default to running as the ",[255,743,744],{},"www-data"," user for security.",[242,747,749],{"id":748},"_3-keep-secrets-out-of-images","3. Keep secrets out of images",[230,751,752],{},"Never bake secrets into your images:",[260,754,756],{"className":368,"code":755,"language":371,"meta":10,"style":10},"# ❌ Never do this\nENV APP_KEY=base64:your-secret-key\n\n# ✅ Provide secrets at runtime via environment variables\n",[255,757,758,763,771,775],{"__ignoreMap":10},[268,759,760],{"class":270,"line":271},[268,761,762],{"class":336},"# ❌ Never do this\n",[268,764,765,768],{"class":270,"line":282},[268,766,767],{"class":378},"ENV",[268,769,770],{"class":278}," APP_KEY=base64:your-secret-key\n",[268,772,773],{"class":270,"line":290},[268,774,388],{"emptyLinePlaceholder":387},[268,776,777],{"class":270,"line":303},[268,778,779],{"class":336},"# ✅ Provide secrets at runtime via environment variables\n",[230,781,782],{},"Secrets should be provided when the container starts, not built into the image.",[234,784,786],{"id":785},"image-versioning-strategy","Image versioning strategy",[230,788,789],{},"When building images for deployment, tag them with meaningful versions:",[260,791,793],{"className":555,"code":792,"filename":557,"language":558,"meta":10,"style":10},"# Tag with git commit SHA\ndocker build -t my-app:$(git rev-parse --short HEAD) .\n\n# Tag with semantic version\ndocker build -t my-app:1.2.3 .\n\n# Tag with date and build number\ndocker build -t my-app:2024-10-31-build-42 .\n",[255,794,795,800,832,836,841,854,858,863],{"__ignoreMap":10},[268,796,797],{"class":270,"line":271},[268,798,799],{"class":336},"# Tag with git commit SHA\n",[268,801,802,804,806,808,811,814,817,820,823,826,829],{"class":270,"line":282},[268,803,566],{"class":565},[268,805,569],{"class":299},[268,807,573],{"class":572},[268,809,810],{"class":299}," my-app:",[268,812,813],{"class":278},"$(",[268,815,816],{"class":565},"git",[268,818,819],{"class":299}," rev-parse",[268,821,822],{"class":572}," --short",[268,824,825],{"class":299}," HEAD",[268,827,828],{"class":278},") ",[268,830,831],{"class":299},".\n",[268,833,834],{"class":270,"line":290},[268,835,388],{"emptyLinePlaceholder":387},[268,837,838],{"class":270,"line":303},[268,839,840],{"class":336},"# Tag with semantic version\n",[268,842,843,845,847,849,852],{"class":270,"line":311},[268,844,566],{"class":565},[268,846,569],{"class":299},[268,848,573],{"class":572},[268,850,851],{"class":299}," my-app:1.2.3",[268,853,579],{"class":299},[268,855,856],{"class":270,"line":320},[268,857,388],{"emptyLinePlaceholder":387},[268,859,860],{"class":270,"line":328},[268,861,862],{"class":336},"# Tag with date and build number\n",[268,864,865,867,869,871,874],{"class":270,"line":495},[268,866,566],{"class":565},[268,868,569],{"class":299},[268,870,573],{"class":572},[268,872,873],{"class":299}," my-app:2024-10-31-build-42",[268,875,579],{"class":299},[230,877,878],{},"Good versioning lets you:",[342,880,881,884,887],{},[345,882,883],{},"Track which code is running in each environment",[345,885,886],{},"Roll back to previous versions quickly",[345,888,889],{},"Debug issues by knowing exactly what's deployed",[234,891,893],{"id":892},"whats-next","What's next?",[230,895,896],{},"Now that you know how to package your application, you're ready to learn about SSL configuration and choosing the right hosting provider for your containerized application.",[898,899],"u-button",{"ariaLabel":900,"className":901,"color":909,"label":900,"size":910,"to":147,"trailing-icon":911,"variant":912},"Configure SSL for your application",[902,903,904,905,906,907,908],"font-bold","ring","ring-inset","ring-blue-600","text-blue-600","hover:ring-blue-500","hover:text-blue-500","primary","md","i-lucide-arrow-right","outline",[914,915,916],"style",{},"html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}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 .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":10,"searchDepth":282,"depth":282,"links":918},[919,923,926,929,934,935],{"id":236,"depth":282,"text":237,"children":920},[921,922],{"id":244,"depth":290,"text":245},{"id":356,"depth":290,"text":357},{"id":421,"depth":282,"text":422,"children":924},[925],{"id":443,"depth":290,"text":444},{"id":548,"depth":282,"text":549,"children":927},[928],{"id":589,"depth":290,"text":590},{"id":667,"depth":282,"text":668,"children":930},[931,932,933],{"id":671,"depth":290,"text":672},{"id":714,"depth":290,"text":715},{"id":748,"depth":290,"text":749},{"id":785,"depth":282,"text":786},{"id":892,"depth":282,"text":893},"Learn how to properly package your PHP application into production-ready Docker images.",null,{"layout":7},{"title":142,"description":936},"pfttJ90CY7Ra76ejueC6Y_GaAQlTKf6_NcNi6MlLpJc",[942,944],{"title":138,"path":139,"stem":140,"description":943,"children":-1},"Learn how to take your PHP application from development to production with confidence using Docker.",{"title":146,"path":147,"stem":148,"description":945,"children":-1},"Learn how to use SSL with the serversideup/php images.",1776367055953]