[{"data":1,"prerenderedAt":1269},["ShallowReactive",2],{"navigation":3,"/docs/image-variations/fpm":221,"/docs/image-variations/fpm-surround":1264},[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":66,"body":223,"description":1258,"extension":1259,"links":1260,"meta":1261,"navigation":550,"path":67,"redirect":1260,"seo":1262,"stem":68,"__hash__":1263},"docs/docs/2.image-variations/fpm.md",{"type":224,"value":225,"toc":1244},"minimark",[226,236,241,244,263,268,282,286,419,423,426,429,449,452,470,474,477,482,485,624,631,777,791,795,808,819,923,927,930,1076,1085,1089,1092,1096,1158,1162,1221,1225,1228,1240],[227,228,229,233],"lead-p",{},[230,231,232],"p",{},"The FPM variation runs PHP-FPM (FastCGI Process Manager) without a web server. It's designed to work alongside a separate web server or load balancer that handles static content and proxies PHP requests to this container.",[230,234,235],{},"Use this variation when you're building microservices architectures or have a separate proxy layer handling HTTP traffic.",[237,238,240],"h2",{"id":239},"when-to-use-fpm","When to Use FPM",[230,242,243],{},"Use the FPM variation when you need to:",[245,246,247,251,254,257,260],"ul",{},[248,249,250],"li",{},"Separate your PHP processing from your web server layer",[248,252,253],{},"Build microservices where PHP runs as a dedicated backend service",[248,255,256],{},"Use a separate load balancer or API gateway to route traffic",[248,258,259],{},"Have an existing NGINX, Traefik, or other reverse proxy infrastructure",[248,261,262],{},"Scale your PHP processing independently from your web server",[264,265,267],"h4",{"id":266},"perfect-for","Perfect for",[245,269,270,273,276,279],{},[248,271,272],{},"Microservices architectures where separation of concerns is important",[248,274,275],{},"Kubernetes deployments with separate service containers",[248,277,278],{},"Large-scale deployments with dedicated load balancers",[248,280,281],{},"Advanced setups where you want full control over your proxy configuration",[264,283,285],{"id":284},"whats-inside","What's Inside",[287,288,289,302],"table",{},[290,291,292],"thead",{},[293,294,295,299],"tr",{},[296,297,298],"th",{},"Item",[296,300,301],{},"Status",[303,304,305,314,321,328,339,349,356,363,382,390,398,409],"tbody",{},[293,306,307,311],{},[308,309,310],"td",{},"PHP-FPM process manager",[308,312,313],{},"✅",[293,315,316,319],{},[308,317,318],{},"PHP CLI binary",[308,320,313],{},[293,322,323,326],{},[308,324,325],{},"Common PHP extensions",[308,327,313],{},[293,329,330,337],{},[308,331,332,336],{},[333,334,335],"code",{},"composer"," executable",[308,338,313],{},[293,340,341,347],{},[308,342,343,346],{},[333,344,345],{},"install-php-extensions"," script",[308,348,313],{},[293,350,351,354],{},[308,352,353],{},"Essential system utilities",[308,355,313],{},[293,357,358,361],{},[308,359,360],{},"S6 Overlay (process supervisor)",[308,362,313],{},[293,364,365,368],{},[308,366,367],{},"Native health checks",[308,369,370,371,381],{},"✅ (via ",[372,373,378],"a",{"href":374,"rel":375,"target":377},"https://github.com/renatomefi/php-fpm-healthcheck",[376],"nofollow","_blank",[333,379,380],{},"php-fpm-healthcheck"," script)",[293,383,384,387],{},[308,385,386],{},"Web server",[308,388,389],{},"❌ (requires external web server)",[293,391,392,395],{},[308,393,394],{},"Process management",[308,396,397],{},"Single entrypoint, single process",[293,399,400,403],{},[308,401,402],{},"Exposed Ports",[308,404,405,408],{},[333,406,407],{},"9000"," (FastCGI)",[293,410,411,414],{},[308,412,413],{},"Stop Signal",[308,415,416],{},[333,417,418],{},"SIGQUIT",[237,420,422],{"id":421},"how-fpm-works","How FPM Works",[230,424,425],{},"Unlike variations that include a web server, the FPM variation only runs PHP-FPM, which listens on port 9000 for FastCGI requests.",[230,427,428],{},"You'll need a separate web server (like NGINX, Apache, or Caddy) to:",[430,431,433,437,441,445],"steps",{"level":432},"4",[264,434,436],{"id":435},"accept-http-requests-from-clients","Accept HTTP requests from clients",[264,438,440],{"id":439},"serve-static-files-directly-css-javascript-images","Serve static files directly (CSS, JavaScript, images)",[264,442,444],{"id":443},"forward-php-requests-to-the-fpm-container-on-port-9000","Forward PHP requests to the FPM container on port 9000",[264,446,448],{"id":447},"return-the-php-fpm-response-back-to-the-client","Return the PHP-FPM response back to the client",[230,450,451],{},"This architecture gives you maximum flexibility but requires more configuration than the all-in-one variations.",[453,454,455],"note",{},[230,456,457,458,461,462,465,466,469],{},"If you want a simpler setup with everything in one container, consider using the ",[333,459,460],{},"fpm-nginx",", ",[333,463,464],{},"fpm-apache",", or ",[333,467,468],{},"frankenphp"," variations instead. These include both the web server and PHP-FPM in a single container.",[237,471,473],{"id":472},"quick-start","Quick Start",[230,475,476],{},"Here are a few examples to help you get started with the FPM variation.",[478,479,481],"h3",{"id":480},"docker-compose-with-separate-nginx","Docker Compose with Separate NGINX",[230,483,484],{},"This example shows a common setup with PHP-FPM in one container and NGINX in another.",[486,487,492],"pre",{"className":488,"code":489,"filename":490,"language":491,"meta":10,"style":10},"language-yml shiki shiki-themes github-dark","services:\n  php:\n    image: serversideup/php:8.5-fpm\n    volumes:\n      - ./:/var/www/html\n\n  nginx:\n    image: nginx:alpine\n    ports:\n      - \"80:80\"\n    volumes:\n      - ./:/var/www/html\n      - ./nginx.conf:/etc/nginx/conf.d/default.conf\n    depends_on:\n      - php\n","compose.yml","yml",[333,493,494,507,515,528,536,545,552,560,570,578,586,593,600,608,616],{"__ignoreMap":10},[495,496,499,503],"span",{"class":497,"line":498},"line",1,[495,500,502],{"class":501},"s4JwU","services",[495,504,506],{"class":505},"s95oV",":\n",[495,508,510,513],{"class":497,"line":509},2,[495,511,512],{"class":501},"  php",[495,514,506],{"class":505},[495,516,518,521,524],{"class":497,"line":517},3,[495,519,520],{"class":501},"    image",[495,522,523],{"class":505},": ",[495,525,527],{"class":526},"sU2Wk","serversideup/php:8.5-fpm\n",[495,529,531,534],{"class":497,"line":530},4,[495,532,533],{"class":501},"    volumes",[495,535,506],{"class":505},[495,537,539,542],{"class":497,"line":538},5,[495,540,541],{"class":505},"      - ",[495,543,544],{"class":526},"./:/var/www/html\n",[495,546,548],{"class":497,"line":547},6,[495,549,551],{"emptyLinePlaceholder":550},true,"\n",[495,553,555,558],{"class":497,"line":554},7,[495,556,557],{"class":501},"  nginx",[495,559,506],{"class":505},[495,561,563,565,567],{"class":497,"line":562},8,[495,564,520],{"class":501},[495,566,523],{"class":505},[495,568,569],{"class":526},"nginx:alpine\n",[495,571,573,576],{"class":497,"line":572},9,[495,574,575],{"class":501},"    ports",[495,577,506],{"class":505},[495,579,581,583],{"class":497,"line":580},10,[495,582,541],{"class":505},[495,584,585],{"class":526},"\"80:80\"\n",[495,587,589,591],{"class":497,"line":588},11,[495,590,533],{"class":501},[495,592,506],{"class":505},[495,594,596,598],{"class":497,"line":595},12,[495,597,541],{"class":505},[495,599,544],{"class":526},[495,601,603,605],{"class":497,"line":602},13,[495,604,541],{"class":505},[495,606,607],{"class":526},"./nginx.conf:/etc/nginx/conf.d/default.conf\n",[495,609,611,614],{"class":497,"line":610},14,[495,612,613],{"class":501},"    depends_on",[495,615,506],{"class":505},[495,617,619,621],{"class":497,"line":618},15,[495,620,541],{"class":505},[495,622,623],{"class":526},"php\n",[230,625,626,627,630],{},"And your NGINX configuration (",[333,628,629],{},"nginx.conf","):",[486,632,636],{"className":633,"code":634,"filename":629,"language":635,"meta":10,"style":10},"language-nginx shiki shiki-themes github-dark","server {\n    listen 80;\n    server_name localhost;\n    root /var/www/html/public;\n\n    index index.php index.html;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass php:9000;\n        fastcgi_index index.php;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n}\n","nginx",[333,637,638,647,659,667,675,679,687,691,703,711,716,720,733,741,749,757,766,771],{"__ignoreMap":10},[495,639,640,644],{"class":497,"line":498},[495,641,643],{"class":642},"snl16","server",[495,645,646],{"class":505}," {\n",[495,648,649,652,656],{"class":497,"line":509},[495,650,651],{"class":642},"    listen ",[495,653,655],{"class":654},"sDLfK","80",[495,657,658],{"class":505},";\n",[495,660,661,664],{"class":497,"line":517},[495,662,663],{"class":642},"    server_name ",[495,665,666],{"class":505},"localhost;\n",[495,668,669,672],{"class":497,"line":530},[495,670,671],{"class":642},"    root ",[495,673,674],{"class":505},"/var/www/html/public;\n",[495,676,677],{"class":497,"line":538},[495,678,551],{"emptyLinePlaceholder":550},[495,680,681,684],{"class":497,"line":547},[495,682,683],{"class":642},"    index ",[495,685,686],{"class":505},"index.php index.html;\n",[495,688,689],{"class":497,"line":554},[495,690,551],{"emptyLinePlaceholder":550},[495,692,693,696,700],{"class":497,"line":562},[495,694,695],{"class":642},"    location",[495,697,699],{"class":698},"svObZ"," / ",[495,701,702],{"class":505},"{\n",[495,704,705,708],{"class":497,"line":572},[495,706,707],{"class":642},"        try_files ",[495,709,710],{"class":505},"$uri $uri/ /index.php?$query_string;\n",[495,712,713],{"class":497,"line":580},[495,714,715],{"class":505},"    }\n",[495,717,718],{"class":497,"line":588},[495,719,551],{"emptyLinePlaceholder":550},[495,721,722,724,727,731],{"class":497,"line":595},[495,723,695],{"class":642},[495,725,726],{"class":642}," ~",[495,728,730],{"class":729},"sns5M"," \\.php$ ",[495,732,702],{"class":505},[495,734,735,738],{"class":497,"line":602},[495,736,737],{"class":642},"        fastcgi_pass ",[495,739,740],{"class":505},"php:9000;\n",[495,742,743,746],{"class":497,"line":610},[495,744,745],{"class":642},"        fastcgi_index ",[495,747,748],{"class":505},"index.php;\n",[495,750,751,754],{"class":497,"line":618},[495,752,753],{"class":642},"        fastcgi_param ",[495,755,756],{"class":505},"SCRIPT_FILENAME $document_root$fastcgi_script_name;\n",[495,758,760,763],{"class":497,"line":759},16,[495,761,762],{"class":642},"        include ",[495,764,765],{"class":505},"fastcgi_params;\n",[495,767,769],{"class":497,"line":768},17,[495,770,715],{"class":505},[495,772,774],{"class":497,"line":773},18,[495,775,776],{"class":505},"}\n",[778,779,780],"tip",{},[230,781,782,783,786,787,790],{},"Notice how the ",[333,784,785],{},"fastcgi_pass"," directive points to ",[333,788,789],{},"php:9000",". This is the service name from your Docker Compose file. Docker's networking allows services to communicate using their service names.",[478,792,794],{"id":793},"health-check","Health Check",[230,796,797,798,803,804,807],{},"The FPM variation includes ",[372,799,801],{"href":374,"rel":800,"target":377},[376],[333,802,380],{},", a POSIX-compliant script that monitors PHP-FPM's ",[333,805,806],{},"/status"," endpoint to verify the service is healthy.",[778,809,810],{},[230,811,812,813,815,816],{},"The ",[333,814,380],{}," script can also monitor specific metrics like accepted connections or queue length. For example, you could fail the health check if the listen queue exceeds 10 processes: ",[333,817,818],{},"php-fpm-healthcheck --listen-queue=10",[486,820,823],{"className":488,"code":821,"filename":490,"highlights":822,"language":491,"meta":10,"style":10},"services:\n  php:\n    image: serversideup/php:8.5-fpm\n    volumes:\n      - ./:/var/www/html\n    healthcheck:\n      test: [\"CMD\", \"php-fpm-healthcheck\", \"--listen-queue=10\"]\n      interval: 10s\n      timeout: 3s\n      retries: 3\n",[554,562,572,580],[333,824,825,831,837,845,851,857,864,890,901,912],{"__ignoreMap":10},[495,826,827,829],{"class":497,"line":498},[495,828,502],{"class":501},[495,830,506],{"class":505},[495,832,833,835],{"class":497,"line":509},[495,834,512],{"class":501},[495,836,506],{"class":505},[495,838,839,841,843],{"class":497,"line":517},[495,840,520],{"class":501},[495,842,523],{"class":505},[495,844,527],{"class":526},[495,846,847,849],{"class":497,"line":530},[495,848,533],{"class":501},[495,850,506],{"class":505},[495,852,853,855],{"class":497,"line":538},[495,854,541],{"class":505},[495,856,544],{"class":526},[495,858,859,862],{"class":497,"line":547},[495,860,861],{"class":501},"    healthcheck",[495,863,506],{"class":505},[495,865,868,871,874,877,879,882,884,887],{"class":866,"line":554},[497,867],"highlight",[495,869,870],{"class":501},"      test",[495,872,873],{"class":505},": [",[495,875,876],{"class":526},"\"CMD\"",[495,878,461],{"class":505},[495,880,881],{"class":526},"\"php-fpm-healthcheck\"",[495,883,461],{"class":505},[495,885,886],{"class":526},"\"--listen-queue=10\"",[495,888,889],{"class":505},"]\n",[495,891,893,896,898],{"class":892,"line":562},[497,867],[495,894,895],{"class":501},"      interval",[495,897,523],{"class":505},[495,899,900],{"class":526},"10s\n",[495,902,904,907,909],{"class":903,"line":572},[497,867],[495,905,906],{"class":501},"      timeout",[495,908,523],{"class":505},[495,910,911],{"class":526},"3s\n",[495,913,915,918,920],{"class":914,"line":580},[497,867],[495,916,917],{"class":501},"      retries",[495,919,523],{"class":505},[495,921,922],{"class":654},"3\n",[237,924,926],{"id":925},"environment-variables","Environment Variables",[230,928,929],{},"The FPM variation supports extensive customization through environment variables. Here are some common ones:",[287,931,932,945],{},[290,933,934],{},[293,935,936,939,942],{},[296,937,938],{},"Variable",[296,940,941],{},"Default",[296,943,944],{},"Description",[303,946,947,962,986,1001,1016,1031,1046,1061],{},[293,948,949,954,959],{},[308,950,951],{},[333,952,953],{},"PHP_FPM_POOL_NAME",[308,955,956],{},[333,957,958],{},"www",[308,960,961],{},"Name of the PHP-FPM pool",[293,963,964,969,974],{},[308,965,966],{},[333,967,968],{},"PHP_FPM_PM_CONTROL",[308,970,971],{},[333,972,973],{},"dynamic",[308,975,976,977,461,979,461,982,985],{},"Process manager control (",[333,978,973],{},[333,980,981],{},"static",[333,983,984],{},"ondemand",")",[293,987,988,993,998],{},[308,989,990],{},[333,991,992],{},"PHP_FPM_PM_MAX_CHILDREN",[308,994,995],{},[333,996,997],{},"20",[308,999,1000],{},"Maximum number of child processes",[293,1002,1003,1008,1013],{},[308,1004,1005],{},[333,1006,1007],{},"PHP_FPM_PM_START_SERVERS",[308,1009,1010],{},[333,1011,1012],{},"2",[308,1014,1015],{},"Number of child processes created on startup",[293,1017,1018,1023,1028],{},[308,1019,1020],{},[333,1021,1022],{},"PHP_FPM_PM_MIN_SPARE_SERVERS",[308,1024,1025],{},[333,1026,1027],{},"1",[308,1029,1030],{},"Minimum number of idle processes",[293,1032,1033,1038,1043],{},[308,1034,1035],{},[333,1036,1037],{},"PHP_FPM_PM_MAX_SPARE_SERVERS",[308,1039,1040],{},[333,1041,1042],{},"3",[308,1044,1045],{},"Maximum number of idle processes",[293,1047,1048,1053,1058],{},[308,1049,1050],{},[333,1051,1052],{},"PHP_MEMORY_LIMIT",[308,1054,1055],{},[333,1056,1057],{},"256M",[308,1059,1060],{},"Maximum memory a script can use",[293,1062,1063,1068,1073],{},[308,1064,1065],{},[333,1066,1067],{},"PHP_MAX_EXECUTION_TIME",[308,1069,1070],{},[333,1071,1072],{},"99",[308,1074,1075],{},"Maximum time a script can run (seconds)",[778,1077,1078],{"to":215},[230,1079,1080,1081,1084],{},"For a complete list of available environment variables, see the ",[372,1082,1083],{"href":215},"Environment Variable Specification →",".",[237,1086,1088],{"id":1087},"performance-tuning","Performance Tuning",[230,1090,1091],{},"The FPM variation gives you fine-grained control over PHP process management. Here are some tuning tips:",[478,1093,1095],{"id":1094},"for-high-traffic-applications","For High-Traffic Applications",[486,1097,1099],{"className":488,"code":1098,"filename":490,"language":491,"meta":10,"style":10},"services:\n  php:\n    image: serversideup/php:8.5-fpm\n    environment:\n      PHP_FPM_PM_CONTROL: \"static\"\n      PHP_FPM_PM_MAX_CHILDREN: \"50\"\n      PHP_MEMORY_LIMIT: \"512M\"\n",[333,1100,1101,1107,1113,1121,1128,1138,1148],{"__ignoreMap":10},[495,1102,1103,1105],{"class":497,"line":498},[495,1104,502],{"class":501},[495,1106,506],{"class":505},[495,1108,1109,1111],{"class":497,"line":509},[495,1110,512],{"class":501},[495,1112,506],{"class":505},[495,1114,1115,1117,1119],{"class":497,"line":517},[495,1116,520],{"class":501},[495,1118,523],{"class":505},[495,1120,527],{"class":526},[495,1122,1123,1126],{"class":497,"line":530},[495,1124,1125],{"class":501},"    environment",[495,1127,506],{"class":505},[495,1129,1130,1133,1135],{"class":497,"line":538},[495,1131,1132],{"class":501},"      PHP_FPM_PM_CONTROL",[495,1134,523],{"class":505},[495,1136,1137],{"class":526},"\"static\"\n",[495,1139,1140,1143,1145],{"class":497,"line":547},[495,1141,1142],{"class":501},"      PHP_FPM_PM_MAX_CHILDREN",[495,1144,523],{"class":505},[495,1146,1147],{"class":526},"\"50\"\n",[495,1149,1150,1153,1155],{"class":497,"line":554},[495,1151,1152],{"class":501},"      PHP_MEMORY_LIMIT",[495,1154,523],{"class":505},[495,1156,1157],{"class":526},"\"512M\"\n",[478,1159,1161],{"id":1160},"for-low-memory-environments","For Low-Memory Environments",[486,1163,1165],{"className":488,"code":1164,"filename":490,"language":491,"meta":10,"style":10},"services:\n  php:\n    image: serversideup/php:8.5-fpm\n    environment:\n      PHP_FPM_PM_CONTROL: \"ondemand\"\n      PHP_FPM_PM_MAX_CHILDREN: \"10\"\n      PHP_FPM_PM_PROCESS_IDLE_TIMEOUT: \"10s\"\n",[333,1166,1167,1173,1179,1187,1193,1202,1211],{"__ignoreMap":10},[495,1168,1169,1171],{"class":497,"line":498},[495,1170,502],{"class":501},[495,1172,506],{"class":505},[495,1174,1175,1177],{"class":497,"line":509},[495,1176,512],{"class":501},[495,1178,506],{"class":505},[495,1180,1181,1183,1185],{"class":497,"line":517},[495,1182,520],{"class":501},[495,1184,523],{"class":505},[495,1186,527],{"class":526},[495,1188,1189,1191],{"class":497,"line":530},[495,1190,1125],{"class":501},[495,1192,506],{"class":505},[495,1194,1195,1197,1199],{"class":497,"line":538},[495,1196,1132],{"class":501},[495,1198,523],{"class":505},[495,1200,1201],{"class":526},"\"ondemand\"\n",[495,1203,1204,1206,1208],{"class":497,"line":547},[495,1205,1142],{"class":501},[495,1207,523],{"class":505},[495,1209,1210],{"class":526},"\"10\"\n",[495,1212,1213,1216,1218],{"class":497,"line":554},[495,1214,1215],{"class":501},"      PHP_FPM_PM_PROCESS_IDLE_TIMEOUT",[495,1217,523],{"class":505},[495,1219,1220],{"class":526},"\"10s\"\n",[237,1222,1224],{"id":1223},"further-customization","Further Customization",[230,1226,1227],{},"If you need to customize the container further, reference the docs below:",[245,1229,1230,1235],{},[248,1231,1232,1234],{},[372,1233,214],{"href":215}," - See which environment variables are available to customize PHP and PHP-FPM settings.",[248,1236,1237,1239],{},[372,1238,218],{"href":219}," - See which commands are available to run inside the container.",[1241,1242,1243],"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 .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 .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}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 .sns5M, html code.shiki .sns5M{--shiki-default:#DBEDFF}",{"title":10,"searchDepth":509,"depth":509,"links":1245},[1246,1247,1248,1252,1253,1257],{"id":239,"depth":509,"text":240},{"id":421,"depth":509,"text":422},{"id":472,"depth":509,"text":473,"children":1249},[1250,1251],{"id":480,"depth":517,"text":481},{"id":793,"depth":517,"text":794},{"id":925,"depth":509,"text":926},{"id":1087,"depth":509,"text":1088,"children":1254},[1255,1256],{"id":1094,"depth":517,"text":1095},{"id":1160,"depth":517,"text":1161},{"id":1223,"depth":509,"text":1224},"Learn how to use the FPM variation of the serversideup/php image.","md",null,{},{"title":66,"description":1258},"iBxKAIY_MaoTEIp4K3b3KA5YReQydm07v4z5MDj8rrE",[1265,1267],{"title":62,"path":63,"stem":64,"description":1266,"children":-1},"Learn how to use the CLI variation of the serversideup/php image.",{"title":70,"path":71,"stem":72,"description":1268,"children":-1},"Learn how to use the FPM-Apache variation of the serversideup/php image.",1776367053013]