{"id":21524177,"url":"https://github.com/alcidesrc/dockerized-php-caddy","last_synced_at":"2026-05-12T19:03:00.065Z","repository":{"id":254599130,"uuid":"847011169","full_name":"AlcidesRC/dockerized-php-caddy","owner":"AlcidesRC","description":"A dockerized environment to build CLI, micro-services and/or web applications based on PHP and Caddy. PHP application is supervised by Caddy","archived":false,"fork":false,"pushed_at":"2024-10-05T18:44:58.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T05:11:27.635Z","etag":null,"topics":["bash","caddy","cli-applications","development","docker","microservices","pcov","php","uopz","web-applications","xdebug"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlcidesRC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["AlcidesRC"],"custom":["http://www.paypal.me/AlcidesRC"]}},"created_at":"2024-08-24T15:40:14.000Z","updated_at":"2024-10-05T18:45:01.000Z","dependencies_parsed_at":"2025-01-24T05:11:16.260Z","dependency_job_id":"1338c281-a9e8-4ddd-93a7-de5d33c566e8","html_url":"https://github.com/AlcidesRC/dockerized-php-caddy","commit_stats":null,"previous_names":["alcidesrc/dockerized-php-caddy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlcidesRC%2Fdockerized-php-caddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlcidesRC%2Fdockerized-php-caddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlcidesRC%2Fdockerized-php-caddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlcidesRC%2Fdockerized-php-caddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlcidesRC","download_url":"https://codeload.github.com/AlcidesRC/dockerized-php-caddy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244082582,"owners_count":20395298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","caddy","cli-applications","development","docker","microservices","pcov","php","uopz","web-applications","xdebug"],"created_at":"2024-11-24T01:21:22.319Z","updated_at":"2026-05-12T19:03:00.059Z","avatar_url":"https://github.com/AlcidesRC.png","language":"Makefile","funding_links":["https://github.com/sponsors/AlcidesRC","http://www.paypal.me/AlcidesRC"],"categories":[],"sub_categories":[],"readme":"# Dockerized PHP - Caddy\n\n\u003e A _dockerized_ environment with Caddy and PHP-FPM **running on a single container** based on Linux Alpine container. \n\n[TOC]\n\n------\n\n## Summary\n\nThis repository contains a _dockerized_ environment for building PHP applications based on **php:8.5-fpm-alpine** using **caddy:2.11-builder-alpine** and **Apache Benchmark**.\n\n### Highlights\n\n- Unified environment to build \u003cabbr title=\"Command Line Interface\"\u003eCLI\u003c/abbr\u003e, \u003cu\u003eweb applications\u003c/u\u003e and/or \u003cu\u003emicro-services\u003c/u\u003e based on **PHP8**.\n- Multi-stage Dockerfile to allows you to create an optimized **development** or **production-ready** Docker images\n- Uses **Caddy webserver**.\n- PHP-FPM is **managed internally by Caddy**.\n- **Application and web server is in one single container**.\n- Includes **Apache Benchmark** for stress testing.\n\n------\n\n## Requirements\n\nTo use this repository you need:\n\n- [Docker](https://www.docker.com/) - An open source containerization platform.\n- [Git](https://git-scm.com/) - The free and open source distributed version control system.\n- [Make](https://www.gnu.org/software/make/) - A command to automate the build/manage process.\n- [jq](https://jqlang.github.io/jq/download/) - A lightweight and flexible command-line JSON processor.\n- [Gum](https://github.com/charmbracelet/gum) - A tool for glamorous shell scripts.\n\n------\n\n## Built with\n\n| Type           | Component                                                              | Description                                                        |\n|----------------|------------------------------------------------------------------------|--------------------------------------------------------------------|\n| Infrastructure | [Docker](https://www.docker.com/)                                      | Containerization platform                                          |\n| Service        | [Caddy Server](https://caddyserver.com/)                               | Open source web server with automatic HTTPS written in Go          |\n| Service        | [Caddy Supervisor](https://github.com/baldinof/caddy-supervisor)       | A module to run and supervise background processes from Caddy      |\n| Service        | [PHP-FPM](https://www.php.net/manual/en/install.fpm.php)               | PHP with FastCGI Process Manager                                   |\n| Service        | [Apache Benchmark](https://httpd.apache.org/docs/2.4/programs/ab.html) | A tool for benchmarking HTTP servers                               |\n| Miscelaneous   | [Bash](https://www.gnu.org/software/bash/)                             | Allows to create an interactive shell within containerized service |\n| Miscelaneous   | [Make](https://www.gnu.org/software/make/)                             | Allows to execute commands defined on a _Makefile_                 |\n| Miscelaneous   | [jq](https://jqlang.github.io/jq/download/)                            | Allows to beautify the Docker inspections in JSON format           |\n\n------\n\n## Getting Started\n\nJust clone the repository into your preferred path:\n\n```bash\n$ mkdir -p ~/path/to/my-new-project \u0026\u0026 cd ~/path/to/my-new-project\n$ git clone git@github.com:AlcidesRC/dockerized-php-caddy.git .\n```\n\n### Conventions\n\n#### Dockerfile\n\n`docker/app/Dockerfile` is based on [multi-stage builds](https://docs.docker.com/build/building/multi-stage/) in order to simplify the process to generate the **development container image** and the optimized **production-ready container image**.\n\n##### Defined Stages\n\n| Name                             | Description                                                        |\n| -------------------------------- |--------------------------------------------------------------------|\n| `base-image`                     | Used to define the base Docker image                               |\n| `caddy-builder`                  | Used to build Caddy with a supervisor plugin                       |\n| `common`                         | Used to define generic variables: `WORKDIR`, `HEALTCHECK`, etc.    |\n| `extensions-builder-required`    | Used to build required PHP extensions                              |\n| `extensions-builder-development` | Used to build **development** PHP extensions                       |\n| `build-development`              | Used to build the development environment                          |\n| `optimize-php-dependencies`      | Used to optimize the PHP dependencies when deployint to production |\n| `build-production`               | Used to build the **production** environment                       |\n\n###### Defined Stages Hierarchy\n\n```mermaid\n---\ntitle: Dockerfile Stages Hierarchy\n---\nstateDiagram-v2\n    [*] --\u003e BaseImage\n    \n    BaseImage --\u003e CaddyBuilder\n    CaddyBuilder --\u003e Common\n    \n    BaseImage --\u003e Common\n    Common --\u003e ExtensionsBuilderCommon\n    \n    ExtensionsBuilderCommon --\u003e ExtensionsBuilderDev\n    ExtensionsBuilderDev --\u003e BuildDevelopment\n    \n    ExtensionsBuilderCommon --\u003e OptimizePhpDependencies\n    OptimizePhpDependencies --\u003e BuildProduction\n```\n\n##### Health check\n\nA custom health check script is provided to check the container service by performing the default `PHP-FPM` `ping/pong` check.\n\nYou can find this shell script at `build/app/healthcheck.sh`.\n\n\u003e [!NOTE]\n\u003e\n\u003e Review the `Dockerfile` file and adjust the `HEALTHCHECK` directive options accordingly.\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Remember to rebuild the Docker image if you make any change on this file.\n\n##### Non-Privileged User\n\nCurrent container service uses a **non-privileged user** to execute `PHP-FPM`, with same User/Group ID than the host user.\n\nThis mechanism allows to `PHP-FPM` create/update shared resources within the host with the same credentials than current host user, avoiding possible file-permissions issues.\n\nTo create this user in the container service, current host user details are collected in the `Makefile` and passed to Docker `build` command as arguments:\n\n| Argument          | Default value   | Required value        | Description                |\n| ----------------- | --------------- | --------------------- | -------------------------- |\n| `HOST_USER_NAME`  | host-user-name  | `$ id --user --name`  | Current host user name     |\n| `HOST_GROUP_NAME` | host-group-name | `$ id --group --name` | Current host group name    |\n| `HOST_USER_ID`    | 1000            | `$ id --user`         | Current host user ID       |\n| `HOST_GROUP_ID`   | 1000            | `$ id --group`        | Current host user group ID |\n\n\u003e [!NOTE]\n\u003e\n\u003e Review the `Makefile` and `docker/app/Dockerfile` files and adjust the arguments to your convenience.\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Remember to rebuild the Docker image if you make any change on `docker/app/Dockerfile` file.\n\n#### Logging\n\nThe container service logs to `STDOUT` by default.\n\n#### Project Structure\n\n```text\n.\n├── ab-endpoints                               # Apache Benchmark endpoints to be tested\n│   ├── homepage                               # Endpoint to be tested\n│   │   ├── config                             # Endpoint definitions\n│   │   └── runner.sh                          # Apache Benchmark runner script\n│   └── post                                   # Endpoint definitions\n│       ├── config                             # Endpoint definitions\n│       └── runner.sh                          # Apache Benchmark runner script\n├── docker\n│   ├── ab                                     # Apache Benchmark Docker related stuff\n│   │   ├── docker-compose.yml                 # Service Docker Compose file\n│   │   └── Dockerfile                         # Service Dockerfile\n│   └── app                                    # Application Docker related stuff\n│       ├── caddy                              # Caddy related stuff\n│       ├── docker-compose.override.dev.yml    # Docker compose file for development environment\n│       ├── docker-compose.override.prod.yml   # Docker compose file for production environment\n│       ├── docker-compose.yml                 # Service Docker Compose file\n│       ├── Dockerfile                         # Service Dockerfile\n│       ├── entrypoint.sh                      # Service entrypoint script \n│       ├── healthcheck.sh                     # Service healthcheck script\n│       └── php-fpm                            # PHP-FPM related stuff\n├── LICENSE\n├── Makefile\n├── README-CADDY.md\n├── README.md\n└── src                                        # Application folder\n```\n\n##### Volumes\n\nThere is a **bind volume** created between the *host* and the container service:\n\n| Host path | Container path  | Description            |\n| --------- | --------------- | ---------------------- |\n| `./src`   | `/var/www/html` | PHP application folder |\n\n\u003e [!NOTE]\n\u003e\n\u003e Review the `docker/app/docker-compose.dev.yml` files and adjust the volumes to your convenience.\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Remember to rebuild the Docker image if you make any change on `docker/app/Dockerfile` file.\n\n##### Available Commands\n\nA *Makefile* is provided with following commands:\n\n```bash\n~/path/to/my-new-project$ make\n\n╔════════════════════════════════════════════════════════════════════════════════╗\n║                                                                                ║\n║                            .: AVAILABLE COMMANDS :.                            ║\n║                                                                                ║\n╚════════════════════════════════════════════════════════════════════════════════╝\n🔹 HOST USER .....  (1000) alcidesramos \n🔹 HOST GROUP ....  (1000) alcidesramos \n🔹 ENVIRONMENT ...  dev \n🔹 DOMAIN URL ....  https://app.localhost \n🔹 SERVICE(S) ....  caddy \n\nChoose a command...         \n\u003e exit                      \n  set-environment           \n  build                     \n  up                        \n  down                      \n  restart                   \n  logs                      \n  inspect                   \n  shell                     \n  composer-dump             \n  composer-install          \n  composer-update           \n  composer-require          \n  composer-require-dev      \n  install-caddy-certificate \n                            \n  ••                        \n←↓↑→ navigate • enter submit\n```\n\n#### Web Server\n\nThis project uses Caddy as main web server which \u003cu\u003eprovides HTTPS by default\u003c/u\u003e.\n\n\u003e [!WARNING]\n\u003e\n\u003e Caddy is optional and you can replace/remove it based on your preferences.\n\n##### Default Domain\n\nThe default website domain is https://app.localhost\n\n\u003e [!TIP]\n\u003e\n\u003e You can customize the domain name in `docker/app/docker-compose.override.xxx.yml`\n\u003e\n\u003e Review as well the application `.env` to ensure `WEBSITE_URL` constant has the desired domain name for development environment.\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Remember to restart the container service(s) if you make any change on any Docker file.\n\n##### Certificate Authority (CA) \u0026 SSL Certificate\n\nYou can generate/register the **Caddy Authority Certificate** in order to get `SSL` support .\n\n\u003e [!NOTE]\n\u003e\n\u003e Just execute `make install-caddy-certificate` and follow the provided guidelines to generate the Caddy Authority Certificate and install it on your host.\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Remember to reinstall the certificate if you rebuild the container service.\n\n#### PHP Application\n\nPHP application must be placed into `src` folder.\n\n\u003e [!TIP]\n\u003e\n\u003e There are some `Makefile` commands that allows you to install a [PHP Skeleton](https://github.com/alcidesrc/php-skeleton) as boilerplate, [Laravel](https://github.com/laravel/laravel), [Symfony](https://symfony.com/) or [Lumen](https://lumen.laravel.com/) when creating `PHP` applications from scratch.\n\n### Development\n\n#### Set the environment\n\nThis command allows to specify the environment to be working on.\n\n```bash\n$ make set-environment\n```\n\n```bash\n╔════════════════════════════════════════════════════════════════════════════════╗\n║                                                                                ║\n║                            .: AVAILABLE COMMANDS :.                            ║\n║                                                                                ║\n╚════════════════════════════════════════════════════════════════════════════════╝\n🔹 ENVIRONMENT ... dev                                                         \n🔹 DOMAIN URL .... https://app.localhost                                            \n🔹 SERVICE(S) .... caddy                                                   \n🔹 USER .......... (1000) alcidesramos                                          \n🔹 GROUP ......... (1000) alcidesramos                                          \n\nSetting up Makefile environment...\n\u003e dev                             \n  prod     \n```\n\n\u003e [!TIP]\n\u003e\n\u003e This value is persisted on `.env` file to improve the UX.\n\n#### Building the container\n\n```bash\n$ make build\n```\n\n#### Starting the container service\n\n```bash\n$ make up\n```\n\n#### Extracting Caddy Local Authority - 20XX ECC Root\n\n```bash\n$ make install-caddy-certificate\n```\n\n#### Accessing to web application\n\n```bash\n$ make open-website\n```\n\n#### Service logs\n\n```bash\n$ make logs\n```\n\n#### Inspecting services\n\n```bash\n$ make inspect\n```\n\n#### Stopping the container service\n\n```bash\n$ make down\n```\n\n### Production\n\n#### Setup the environment\n\nThis command allows to specify the environment to be working on.\n\n```bash\n$ make set-environment\n```\n\n```bash\n╔════════════════════════════════════════════════════════════════════════════════╗\n║                                                                                ║\n║                            .: AVAILABLE COMMANDS :.                            ║\n║                                                                                ║\n╚════════════════════════════════════════════════════════════════════════════════╝\n🔹 ENVIRONMENT ... dev                                                         \n🔹 DOMAIN URL .... https://app.localhost                                            \n🔹 SERVICE(S) .... caddy                                                   \n🔹 USER .......... (1000) alcidesramos                                          \n🔹 GROUP ......... (1000) alcidesramos                                          \n\nSetting up Makefile environment...\n  dev                             \n\u003e prod     \n```\n\n\u003e [!TIP]\n\u003e\n\u003e This value is persisted on `.env` file to improve the UX.\n\n#### Building the container\n\n```bash\n$ make build\n```\n\n#### Starting the container service\n\n```bash\n$ make up\n```\n\n#### Extracting Caddy Local Authority - 20XX ECC Root\n\n```bash\n$ make install-caddy-certificate\n```\n\n#### Accessing to web application\n\n```bash\n$ make open-website\n```\n\n#### Service logs\n\n```bash\n$ make logs\n```\n\n#### Inspecting services\n\n```bash\n$ make inspect\n```\n\n#### Stopping the container service\n\n```bash\n$ make down\n```\n\n### Stress Tests\n\nThis repository includes an independent container with [Apache Benchmark](https://httpd.apache.org/docs/2.4/programs/ab.html) and [GnuPlot](http://www.gnuplot.info/) to perform stress tests against main container service.\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e With this schema stress tests are totally independent from analyzed services, using ephemeral container services created expressly to perform a test and, once it is finished, the container is destroyed, avoiding possible cache issues. \n\n#### Metrics\n\n```bash\n$ make test-stress\n```\n\n##### Defined endpoints\n\n| Endpoint | Method | Payload | Total Requests                  | Concurrent Requests         |\n| -------- | ------ | ------- | ------------------------------- | --------------------------- |\n| `/`      | `GET`  | N/A     | 1000                            | 100                         |\n| `/post`  | `POST` | Yes     | 1000\u003cbr/\u003e2000\u003cbr/\u003e3000\u003cbr/\u003e5000 | 100\u003cbr/\u003e200\u003cbr/\u003e300\u003cbr/\u003e500 |\n\n##### Customizing endpoints\n\nEndpoints are defined in `ab-endpoints` as folders. \n\nEach folder contains:\n\n```bash\n.\n├── chart.png              # Generated GNU Plot chart\n├── config                 # Endpoint definitions\n│   ├── gplot.p            # GNU Plot config file\n│   └── payload.json       # Endpoint payload to be sent (if required)\n├── gplot.XXXX.data        # Generated Apache Benchmarks metrics\n└── runner.sh              # Runner script\n```\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Pay attention that generated `gplot.XXXX.data` and `chart.png` will be stored in the same folder.\n\n#### Examples\n\n##### Homepage\n\n###### runner.sh\n\n```bash\n#!/bin/sh\n\nset -e\n\nab -k -f ALL -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept: */*' -s 30 -n 1000 -c 100 -g gplot.1000.data http://localhost/\n\ngnuplot ./config/gplot.p\n```\n\n###### config/gplot.p\n\n```bash\nset terminal png size 1024,768\nset size 1,1\nset key right top\nset grid y\n\nset title \"Apache Benchmark - Endpoint [ / ]\" font 'Noto Sans Mono:style=Bold,14'\nset xlabel \"Request\" font 'Noto Sans Mono:style=Regular,10'\nset ylabel \"Response Time (ms)\" font 'Noto Sans Mono:style=Regular,10'\n\nset output \"chart.png\"\n\n## Single metric\nplot \"gplot.1000.data\" using 10 smooth sbezier with lines title \"Requests [ 1000 ] - Concurrency [ 100 ]\"\n\nexit\n```\n\n###### Chart\n\n![apache-benchmark-endpoints-homepage](.README/apache-benchmark/homepage.png)\n\n##### Post\n\n###### runner.sh\n\n```bash\n#!/bin/sh\n\nset -e\n\nab -k -f ALL -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept: */*' -s 30 -p ./config/payload.json -n 1000 -c 100 -g gplot.1000.data http://localhost/post\nab -k -f ALL -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept: */*' -s 30 -p ./config/payload.json -n 2000 -c 200 -g gplot.2000.data http://localhost/post\nab -k -f ALL -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept: */*' -s 30 -p ./config/payload.json -n 3000 -c 300 -g gplot.3000.data http://localhost/post\nab -k -f ALL -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept: */*' -s 30 -p ./config/payload.json -n 5000 -c 500 -g gplot.5000.data http://localhost/post\n\ngnuplot ./config/gplot.p\n```\n\n###### config/gplot.p\n\n```bash\nset terminal png size 1024,768\nset size 1,1\nset key right top\nset grid y\n\nset title \"Apache Benchmark - Endpoint [ /post ]\" font 'Noto Sans Mono:style=Bold,14'\nset xlabel \"Request\" font 'Noto Sans Mono:style=Regular,10'\nset ylabel \"Response Time (ms)\" font 'Noto Sans Mono:style=Regular,10'\n\nset output \"chart.png\"\n\n## Multiple metrics\nplot \"gplot.1000.data\" using 10 smooth sbezier with lines title \"Requests [ 1000 ] - Concurrency [ 100 ]\", \\\n     \"gplot.2000.data\" using 10 smooth sbezier with lines title \"Requests [ 2000 ] - Concurrency [ 200 ]\", \\\n     \"gplot.3000.data\" using 10 smooth sbezier with lines title \"Requests [ 3000 ] - Concurrency [ 300 ]\", \\\n     \"gplot.5000.data\" using 10 smooth sbezier with lines title \"Requests [ 5000 ] - Concurrency [ 500 ]\"\n\nexit\n```\n\n###### config/payload.json\n\n```json\n{\n  \"param1\": \"1\",\n  \"param2\": \"2\"\n}\n```\n\n###### Chart\n\n![apache-benchmark-endpoints-homepage](.README/apache-benchmark/post.png)\n\n### Debug / Setup PHPStorm\n\n#### Docker-Compose Environment\n\nPlease update the `docker-compose.override.dev.yml` file with proper `PHP_XDEBUG_CLIENT_HOST` IP address. You can get this value just by executing the following command:\n\n```bash\n$ make get-xdebug-client-host\n```\n\nSo the `docker-compose.override.dev.yml` should look like:\n\n```yaml\nenvironment:\n    - PHP_XDEBUG_IDEKEY=PHPSTORM\n    - PHP_XDEBUG_MODE=develop,coverage,debug,profile\n    - PHP_XDEBUG_START_WITH_REQUEST=yes\n    - PHP_XDEBUG_CLIENT_HOST=172.18.0.1\n    - PHP_XDEBUG_CLIENT_PORT=9003\n    - PHP_XDEBUG_MAX_NESTING_LEVEL=3000\n    - PHP_XDEBUG_OUTPUT_DIR=/tmp/xdebug\n    - PHP_XDEBUG_DISCOVER_CLIENT_HOST=false\n    - PHP_XDEBUG_LOG=/dev/stdout\n    - PHP_XDEBUG_LOG_LEVEL=0\n...\n```\n\n#### Help \u003e Change Memory Settings\n\nTo allow PHPStorm index huge projects consider to increase the default assigned memory amount from 2048 MiB up to 8192 MiB.\n\n![phpstorm-memory-settings](.README/setup-phpstorm-memory/phpstorm-memory-settings.png)\n\n#### Settings \u003e PHP \u003e Debug\n\nEnsure the `Max. simultaneous connections` is set to 1 to avoid trace collisions when debugging.\n\n![phpstorm-debug](.README/setup-phpstorm-xdebug/phpstorm-settings-php-debug.png)\n\n#### Settings \u003e PHP \u003e Servers\n\nEnsure the `~/path/to/my-new-project/src` folder is mapped to `/var/www/html`\n\n![phpstorm-settings-php-servers](.README/setup-phpstorm-xdebug/phpstorm-settings-php-servers.png)\n\n#### Settings \u003e PHP\n\n![phpstorm-settings-php-settings](.README/setup-phpstorm-xdebug/phpstorm-settings-php-settings.png)\n\n![phpstorm-settings-php-settings-cli-interpreter](.README/setup-phpstorm-xdebug/phpstorm-settings-php-settings-cli-interpreter.png)\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e When selecting Docker Compose configuration files, ensure to include:\n\u003e\n\u003e 1. The `docker/app/docker-compose.yml` file, which contains the default service(s) specification\n\u003e 2. The `docker/app/docker-compose.override.dev.yml` file, which may contains some override values or customization from default specification.\n\u003e\n\u003e **The order on here is important!**\n\n![phpstorm-settings-php-settings-cli-interpreter-configuration-files](.README/setup-phpstorm-xdebug/phpstorm-settings-php-settings-cli-interpreter-configuration-files.png)\n\n------\n\n## Security Vulnerabilities\n\nPlease review our security policy on how to report security vulnerabilities:\n\n**PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY**\n\n### Supported Versions\n\nOnly the latest major version receives security fixes.\n\n### Reporting a Vulnerability\n\nIf you discover a security vulnerability within this project, please [open an issue here](https://github.com/alcidesrc/dockerized-php-caddy/issues). All security vulnerabilities will be promptly addressed.\n\n------\n\n## License\n\nThe MIT License (MIT). Please see [LICENSE](./LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falcidesrc%2Fdockerized-php-caddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falcidesrc%2Fdockerized-php-caddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falcidesrc%2Fdockerized-php-caddy/lists"}