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