[{"data":1,"prerenderedAt":1245},["ShallowReactive",2],{"navigation":3,"/docs/getting-started/default-configurations":221,"/docs/getting-started/default-configurations-surround":1240},[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":36,"body":223,"description":1232,"extension":509,"links":1233,"meta":1234,"navigation":1237,"path":37,"redirect":1233,"seo":1238,"stem":38,"__hash__":1239},"docs/docs/1.getting-started/6.default-configurations.md",{"type":224,"value":225,"toc":1215},"minimark",[226,237,242,245,249,260,265,268,291,295,298,303,306,368,372,378,397,403,407,410,414,417,454,457,461,485,496,512,516,519,523,527,600,604,608,611,767,770,808,811,815,819,822,992,997,1001,1012,1027,1032,1036,1040,1047,1050,1190,1193,1197,1201,1211],[227,228,229],"lead-p",{},[230,231,232,236],"p",{},[233,234,235],"code",{},"serversideup/php"," is configured for real-world deployments right out of the box. This saves you many hours so you can launch faster than ever.",[238,239,241],"h2",{"id":240},"production-ready-and-optimized-for-laravel-wordpress","Production-ready and optimized for Laravel & WordPress",[230,243,244],{},"All values are defaulted to improve security and performance. We also spent the time to carefully review official documentation and include packages that are required specifically for Laravel and WordPress.",[238,246,248],{"id":247},"unprivileged-by-default","Unprivileged by Default",[230,250,251,252,255,256,259],{},"All images default to running as the OS-native ",[233,253,254],{},"www-data"," user instead of ",[233,257,258],{},"root",". This is a critical security practice that limits what an attacker can do if they compromise your container.",[261,262,264],"h3",{"id":263},"why-this-matters","Why this matters",[230,266,267],{},"Running as a non-root user means:",[269,270,271,279,285],"ul",{},[272,273,274,278],"li",{},[275,276,277],"strong",{},"Better security",": If someone exploits a vulnerability in your app, they can't gain root access to your container or host system",[272,280,281,284],{},[275,282,283],{},"Production-ready",": This follows Docker and Kubernetes security best practices",[272,286,287,290],{},[275,288,289],{},"Easier compliance",": Many security policies require non-root containers",[261,292,294],{"id":293},"what-this-means-for-you","What this means for you",[230,296,297],{},"Running unprivileged has two practical implications you should know about:",[299,300,302],"h4",{"id":301},"different-ports-for-web-servers","Different ports for web servers",[230,304,305],{},"On Linux systems, only root can bind to ports below 1024 (like 80 and 443). Since our containers don't run as root, they use higher port numbers by default:",[307,308,309,326],"table",{},[310,311,312],"thead",{},[313,314,315,321],"tr",{},[316,317,318],"th",{},[275,319,320],{},"Variation",[316,322,323],{},[275,324,325],{},"Default Ports",[327,328,329,338,346,354,361],"tbody",{},[313,330,331,335],{},[332,333,334],"td",{},"cli",[332,336,337],{},"(none)",[313,339,340,343],{},[332,341,342],{},"fpm",[332,344,345],{},"9000",[313,347,348,351],{},[332,349,350],{},"fpm-nginx",[332,352,353],{},"HTTP: 8080, HTTPS: 8443",[313,355,356,359],{},[332,357,358],{},"fpm-apache",[332,360,353],{},[313,362,363,366],{},[332,364,365],{},"frankenphp",[332,367,353],{},[299,369,371],{"id":370},"file-permissions-to-be-aware-of","File permissions to be aware of",[230,373,374,375,377],{},"The ",[233,376,254],{}," user has different IDs depending on your base operating system:",[269,379,380,389],{},[272,381,382,385,386],{},[275,383,384],{},"Debian",": UID/GID ",[233,387,388],{},"33:33",[272,390,391,385,394],{},[275,392,393],{},"Alpine",[233,395,396],{},"82:82",[398,399,400],"tip",{},[230,401,402],{},"We kept these as the OS defaults to maintain compatibility with other tools and images. If you're mounting volumes from your host machine or switching between Debian and Alpine, you might need to adjust file permissions.",[261,404,406],{"id":405},"running-on-standard-httphttps-ports-80-and-443","Running on standard HTTP/HTTPS ports (80 and 443)",[230,408,409],{},"Don't worry—you have two easy options to run your app on the standard web ports:",[299,411,413],{"id":412},"docker-port-mapping-recommended-for-development","Docker port mapping (recommended for development)",[230,415,416],{},"Use Docker's built-in port mapping to route traffic from port 80/443 on your host to the container's higher ports:",[418,419,424],"pre",{"className":420,"code":421,"filename":422,"language":423,"meta":10,"style":10},"language-bash shiki shiki-themes github-dark","docker run -p 80:8080 -p 443:8443 serversideup/php:8.5-fpm-nginx\n","Terminal","bash",[233,425,426],{"__ignoreMap":10},[427,428,431,435,439,443,446,448,451],"span",{"class":429,"line":430},"line",1,[427,432,434],{"class":433},"svObZ","docker",[427,436,438],{"class":437},"sU2Wk"," run",[427,440,442],{"class":441},"sDLfK"," -p",[427,444,445],{"class":437}," 80:8080",[427,447,442],{"class":441},[427,449,450],{"class":437}," 443:8443",[427,452,453],{"class":437}," serversideup/php:8.5-fpm-nginx\n",[230,455,456],{},"This tells Docker: \"Take traffic coming to port 80 on my machine and send it to port 8080 in the container.\"",[299,458,460],{"id":459},"reverse-proxy-recommended-for-production","Reverse proxy (recommended for production)",[230,462,463,464,472,473,478,479,484],{},"Use a reverse proxy like ",[465,466,471],"a",{"href":467,"rel":468,"target":470},"https://caddyserver.com/",[469],"nofollow","_blank","Caddy",", ",[465,474,477],{"href":475,"rel":476,"target":470},"https://traefik.io/",[469],"Traefik",", or ",[465,480,483],{"href":481,"rel":482,"target":470},"https://nginx.org/",[469],"NGINX"," to handle SSL certificates and route traffic to your containers. This is the preferred approach for production because it:",[269,486,487,490,493],{},[272,488,489],{},"Automatically handles SSL certificate generation and renewal",[272,491,492],{},"Can route to multiple containers/services",[272,494,495],{},"Provides additional security features like rate limiting",[497,498],"u-button",{"ariaLabel":499,"className":500,"color":508,"label":499,"size":509,"to":147,"trailing-icon":510,"variant":511},"Learn about SSL configuration",[501,502,503,504,505,506,507],"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",[238,513,515],{"id":514},"default-environment-variables","Default Environment Variables",[230,517,518],{},"Environment variables give you a ton of flexibility to customize your container without the complexity of mounting custom configuration files. By default, these images are set to production-ready values. You can read more about the available environment variables below.",[497,520],{"ariaLabel":521,"className":522,"color":508,"label":521,"size":509,"to":215,"trailing-icon":510,"variant":511},"Learn more about environment variables",[501,502,503,504,505,506,507],[238,524,526],{"id":525},"default-php-ini-settings","Default PHP INI Settings",[307,528,529,543],{},[310,530,531],{},[313,532,533,538],{},[316,534,535],{},[275,536,537],{},"PHP INI file",[316,539,540],{},[275,541,542],{},"Description",[327,544,545,570],{},[313,546,547,561],{},[332,548,549,552,553,556,552,558],{},[275,550,551],{},"Image Default"," ",[554,555],"br",{},[554,557],{},[233,559,560],{},"/usr/local/etc/php/conf.d/serversideup-docker-php.ini",[332,562,563,564,569],{},"This is our production-ready PHP ini file that accepts environment variables. You can ",[465,565,568],{"href":566,"rel":567,"target":470},"https://github.com/serversideup/docker-php/blob/main/src/common/usr/local/etc/php/conf.d/serversideup-docker-php.ini",[469],"review it in greater detail on GitHub",".",[313,571,572,584],{},[332,573,574,552,577,579,552,581],{},[275,575,576],{},"Adding your own PHP INI file",[554,578],{},[554,580],{},[233,582,583],{},"/usr/local/etc/php/conf.d/*.ini",[332,585,586,587,590,591,594,595,599],{},"To set your own PHP settings, simply create a ",[233,588,589],{},".ini"," file in the ",[233,592,593],{},"/usr/local/etc/php/conf.d/"," directory. It will be loaded automatically ",[596,597,598],"em",{},"after"," our default ini file, so any settings you define will override the defaults.",[497,601],{"ariaLabel":602,"className":603,"color":508,"label":602,"size":509,"to":185,"trailing-icon":510,"variant":511},"Learn more about changing common PHP settings",[501,502,503,504,505,506,507],[238,605,607],{"id":606},"default-php-extensions","Default PHP Extensions",[230,609,610],{},"The following extensions are installed by default:",[307,612,613,631],{},[310,614,615],{},[313,616,617,622,626],{},[316,618,619],{},[275,620,621],{},"Extension",[316,623,624],{},[275,625,542],{},[316,627,628],{},[275,629,630],{},"Why we included it",[327,632,633,658,676,696,711,726,747],{},[313,634,635,642,645],{},[332,636,637],{},[465,638,641],{"href":639,"rel":640},"https://www.php.net/manual/en/book.opcache.php",[469],"opcache",[332,643,644],{},"The Zend OPcache provides faster PHP execution through opcode caching and optimization.",[332,646,647,648,650,652,653,569],{},"This is a must-have for PHP performance.",[554,649],{},[554,651],{},"⚠️ OPcache is disabled by default but can easily be enabled with ",[465,654,655],{"href":215},[233,656,657],{},"PHP_OPCACHE_ENABLE=1",[313,659,660,667,670],{},[332,661,662],{},[465,663,666],{"href":664,"rel":665},"https://www.php.net/manual/en/book.mysqli.php",[469],"mysqli",[332,668,669],{},"The \"MySQL Improved\" extension is an older extension for connecting to MySQL 4.1 and above.",[332,671,672,675],{},[275,673,674],{},"Enabled for fpm-apache only",". This is a legacy MySQL connector required for WordPress.",[313,677,678,685,688],{},[332,679,680],{},[465,681,684],{"href":682,"rel":683},"https://www.php.net/manual/en/intro.pcntl.php",[469],"pcntl",[332,686,687],{},"Process Control support in PHP implements the Unix style of process creation, program execution, signal handling and process termination.",[332,689,690,691],{},"This is required for ",[465,692,695],{"href":693,"rel":694},"https://laravel.com/docs/10.x/queues#timeout",[469],"Laravel queues and Laravel Horizon",[313,697,698,705,708],{},[332,699,700],{},[465,701,704],{"href":702,"rel":703},"https://www.php.net/manual/en/ref.pdo-mysql.php",[469],"pdo_mysql",[332,706,707],{},"The MySQL PDO extension allows you to connect to MySQL databases.",[332,709,710],{},"MySQL and MariaDB databases are very popular.",[313,712,713,720,723],{},[332,714,715],{},[465,716,719],{"href":717,"rel":718},"https://www.php.net/manual/en/ref.pdo-pgsql.php",[469],"pdo_pgsql",[332,721,722],{},"The PostgreSQL PDO extension allows you to connect to PostgreSQL databases.",[332,724,725],{},"PostgreSQL databases are very popular.",[313,727,728,735,738],{},[332,729,730],{},[465,731,734],{"href":732,"rel":733},"https://www.php.net/manual/en/book.redis.php",[469],"redis",[332,736,737],{},"The Redis extension allows you to connect to Redis databases.",[332,739,740,741,746],{},"Redis is very popular for caching and it's also required for ",[465,742,745],{"href":743,"rel":744},"https://laravel.com/docs/10.x/horizon",[469],"Laravel Horizon",". Our tests concluded adding this package only added 2MB to the image size.",[313,748,749,756,759],{},[332,750,751],{},[465,752,755],{"href":753,"rel":754},"https://www.php.net/manual/en/book.zip.php",[469],"zip",[332,757,758],{},"The Zip extension allows you to create and extract zip files.",[332,760,761,762,569],{},"We included this for the popularity of apps working with ZIP files. This package is also required if you're working with attachments on ",[465,763,766],{"href":764,"rel":765},"https://laravel.com/docs/10.x/dusk#attaching-files",[469],"Laravel Dusk",[230,768,769],{},"The official PHP images are already providing the following extensions:",[269,771,772,775,778,781,784,787,790,793,796,799,802,805],{},[272,773,774],{},"ctype",[272,776,777],{},"curl",[272,779,780],{},"dom",[272,782,783],{},"fileinfo",[272,785,786],{},"filter",[272,788,789],{},"hash",[272,791,792],{},"mbstring",[272,794,795],{},"openssl",[272,797,798],{},"pcre",[272,800,801],{},"session",[272,803,804],{},"tokenizer",[272,806,807],{},"xml",[230,809,810],{},"If you need to install additional extensions, you can use the guide below to learn more.",[497,812],{"ariaLabel":813,"className":814,"color":508,"label":813,"size":509,"to":189,"trailing-icon":510,"variant":511},"Learn more about installing additional PHP extensions",[501,502,503,504,505,506,507],[238,816,818],{"id":817},"default-operating-system-packages","Default Operating System Packages",[230,820,821],{},"The following packages are installed by default:",[307,823,824,846],{},[310,825,826],{},[313,827,828,833,837,842],{},[316,829,830],{},[275,831,832],{},"Package",[316,834,835],{},[275,836,542],{},[316,838,839],{},[275,840,841],{},"Image variations",[316,843,844],{},[275,845,630],{},[327,847,848,889,918,947,966],{},[313,849,850,866,869,878],{},[332,851,852,855,857,858,860,863,865],{},[233,853,854],{},"libfcgi-bin",[554,856],{},"(Debian)",[554,859],{},[233,861,862],{},"fcgi",[554,864],{},"(Alpine)",[332,867,868],{},"FastCGI is a protocol for interfacing interactive programs with a web server.",[332,870,871,872,874,875,877],{},"*-fpm ",[554,873],{}," *-fpm-nginx ",[554,876],{}," *-fpm-apache",[332,879,880,881,888],{},"This is required for the webserver to interface with PHP-FPM and the ",[465,882,885],{"href":883,"rel":884},"https://github.com/renatomefi/php-fpm-healthcheck",[469],[233,886,887],{},"php-fpm-healthcheck"," project.",[313,890,891,903,906,911],{},[332,892,893,896,897,552,899,902],{},[233,894,895],{},"gettext-base"," (Debian) ",[554,898],{},[233,900,901],{},"gettext"," (Alpine)",[332,904,905],{},"GNU gettext is a framework for translating user interfaces.",[332,907,908,909,877],{},"*-fpm-nginx ",[554,910],{},[332,912,913,914,917],{},"This is required for the ",[233,915,916],{},"envsubst"," command. We use this command to process templates on container initialization.",[313,919,920,932,935,938],{},[332,921,922,925,857,927,929,902],{},[233,923,924],{},"libstdc++6",[554,926],{},[554,928],{},[233,930,931],{},"libstdc++",[332,933,934],{},"The GNU Standard C++ Library is a C++ standard library.",[332,936,937],{},"*-frankenphp",[332,939,940,941,946],{},"This is ",[465,942,945],{"href":943,"rel":944},"https://github.com/php/frankenphp/blob/e917ab79742c9e4703023861fdc7a86cdb59da1e/Dockerfile#L135-L138",[469],"required for the watcher to run"," with FrankenPHP.",[313,948,949,954,957,960],{},[332,950,951],{},[233,952,953],{},"procps",[332,955,956],{},"The procps package contains programs for monitoring your system and its processes.",[332,958,959],{},"* (only Debian images)",[332,961,690,962,965],{},[233,963,964],{},"pgrep"," so we can use that for our native health checks.",[313,967,968,973,980,983],{},[332,969,970],{},[233,971,972],{},"shadow",[332,974,975,976,979],{},"Shadow is required for the ",[233,977,978],{},"usermod"," command.",[332,981,982],{},"*-alpine",[332,984,985,986,988,989,569],{},"This is required to change the UID and GID of the ",[233,987,254],{}," user in ",[233,990,991],{},"docker-php-serversideup-set-id",[497,993],{"ariaLabel":994,"className":995,"color":508,"label":994,"size":509,"to":996,"trailing-icon":510,"variant":511},"Learn which operating systems are available",[501,502,503,504,505,506,507],"/docs/getting-started/choosing-an-image#operating-system",[238,998,1000],{"id":999},"health-checks","Health Checks",[230,1002,1003,1004,1007,1008,1011],{},"By default, all health checks for web servers (Apache, NGINX, FrankenPHP, etc.) are located at ",[233,1005,1006],{},"/healthcheck",". You should receive an ",[233,1009,1010],{},"OK"," response if the container is healthy.",[230,1013,1014,1015,1017,1018,1023,1024,569],{},"For our ",[233,1016,342],{}," variation, we use the ",[465,1019,1021],{"href":883,"rel":1020},[469],[233,1022,887],{}," script to verify the health of PHP-FPM. This script is located at ",[233,1025,1026],{},"/usr/local/bin/php-fpm-healthcheck",[230,1028,374,1029,1031],{},[233,1030,334],{}," variation does not have a health check because it doesn't really make sense to have one. Would love to discuss more if you feel different.",[497,1033],{"ariaLabel":1034,"className":1035,"color":508,"label":1034,"size":509,"to":164,"trailing-icon":510,"variant":511},"Learn more about health checks",[501,502,503,504,505,506,507],[238,1037,1039],{"id":1038},"default-entrypoint-scripts","Default Entrypoint Scripts",[230,1041,1042,1043,1046],{},"We created an entrypoint script that scans the ",[233,1044,1045],{},"entrypoint.d"," directory for other shell scripts to execute before the main container process starts. All scripts are executed in alphabetical order so you can have full control over what script execution order.",[230,1048,1049],{},"We also provide a few default scripts to help you get started.",[307,1051,1052,1069],{},[310,1053,1054],{},[313,1055,1056,1061,1065],{},[316,1057,1058],{},[275,1059,1060],{},"Script Name",[316,1062,1063],{},[275,1064,542],{},[316,1066,1067],{},[275,1068,841],{},[327,1070,1071,1084,1099,1112,1132,1148],{},[313,1072,1073,1078,1081],{},[332,1074,1075],{},[233,1076,1077],{},"0-container-info.sh",[332,1079,1080],{},"Shows basic execution information, such as Docker User, UID, GID, etc.",[332,1082,1083],{},"all",[313,1085,1086,1091,1097],{},[332,1087,1088],{},[233,1089,1090],{},"1-log-output-level.sh",[332,1092,1093,1094],{},"Sets PHP log output level to match ",[233,1095,1096],{},"LOG_OUTPUT_LEVEL",[332,1098,1083],{},[313,1100,1101,1106,1109],{},[332,1102,1103],{},[233,1104,1105],{},"5-generate-ssl.sh",[332,1107,1108],{},"Generates a self-signed SSL certificate and key for the container.",[332,1110,1111],{},"fpm-nginx, fpm-apache, frankenphp",[313,1113,1114,1119,1130],{},[332,1115,1116],{},[233,1117,1118],{},"5-fpm-pool-user.sh",[332,1120,1121,1122,1125,1126,1129],{},"Sets the user and group of the PHP-FPM child processes to the values of ",[233,1123,1124],{},"PHP_FPM_CHILD_PROCESS_USER"," and ",[233,1127,1128],{},"PHP_FPM_CHILD_PROCESS_GROUP"," if the container is running as root.",[332,1131,342],{},[313,1133,1134,1139,1142],{},[332,1135,1136],{},[233,1137,1138],{},"10-init-webserver-config.sh",[332,1140,1141],{},"Processes web server configuration templates, configures SSL (if enabled), and prepares web server for launch",[332,1143,1144,1145,1147],{},"*-nginx ",[554,1146],{}," *-apache",[313,1149,1150,1155,1188],{},[332,1151,1152],{},[233,1153,1154],{},"50-laravel-automations.sh",[332,1156,1157,1158,1161,1162,1164,1165,552,1168,1164,1170,552,1173,1164,1175,552,1178,1164,1180,552,1183,1164,1185],{},"If ",[233,1159,1160],{},"AUTORUN_ENABLED"," is set to true, and a Laravel installation is detected, the following commands will automatically execute on container start: ",[554,1163],{}," - ",[233,1166,1167],{},"php artisan config:cache",[554,1169],{},[233,1171,1172],{},"php artisan route:cache",[554,1174],{},[233,1176,1177],{},"php artisan view:cache",[554,1179],{},[233,1181,1182],{},"php artisan event:cache",[554,1184],{},[233,1186,1187],{},"php artisan migrate --force",[332,1189,1083],{},[230,1191,1192],{},"If you want to add your own entrypoint scripts, use the guide below to learn more.",[497,1194],{"ariaLabel":1195,"className":1196,"color":508,"label":1195,"size":509,"to":193,"trailing-icon":510,"variant":511},"Learn more about adding your own start up scripts",[501,502,503,504,505,506,507],[238,1198,1200],{"id":1199},"disabling-default-entrypoint-scripts","Disabling Default Entrypoint Scripts",[230,1202,1203,1204,1207,1208,569],{},"We get it. Sometimes you just want our stuff to get out of the way. If you want full control to customize your image, all default entrypoint scripts can be disabled by setting ",[233,1205,1206],{},"DISABLE_DEFAULT_CONFIG"," to ",[233,1209,1210],{},"true",[1212,1213,1214],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}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);}",{"title":10,"searchDepth":1216,"depth":1216,"links":1217},2,[1218,1219,1225,1226,1227,1228,1229,1230,1231],{"id":240,"depth":1216,"text":241},{"id":247,"depth":1216,"text":248,"children":1220},[1221,1223,1224],{"id":263,"depth":1222,"text":264},3,{"id":293,"depth":1222,"text":294},{"id":405,"depth":1222,"text":406},{"id":514,"depth":1216,"text":515},{"id":525,"depth":1216,"text":526},{"id":606,"depth":1216,"text":607},{"id":817,"depth":1216,"text":818},{"id":999,"depth":1216,"text":1000},{"id":1038,"depth":1216,"text":1039},{"id":1199,"depth":1216,"text":1200},"Learn how to get started with serversideup/php Docker Images.",null,{"head":1235,"layout":7},{"title":1236},"Installation - Docker PHP - Server Side Up",true,{"title":36,"description":1232},"OOpfowgfeN-qjwWdrYUnghBsmV4bV4E9BBgjvi7rgPQ",[1241,1243],{"title":32,"path":33,"stem":34,"description":1242,"children":-1},"Learn how to choose the right image for your use case.",{"title":40,"path":41,"stem":42,"description":1244,"children":-1},"Learn how the serversideup/php Docker images are built and how to upgrade.",1776367053013]