{"id":19510091,"url":"https://github.com/jakubboucek/docker-lamp-devstack","last_synced_at":"2025-07-15T14:04:49.065Z","repository":{"id":38013890,"uuid":"205600983","full_name":"jakubboucek/docker-lamp-devstack","owner":"jakubboucek","description":"Prepared images for local development in LAMP devstack for linux/amd64","archived":false,"fork":false,"pushed_at":"2025-04-21T00:34:51.000Z","size":334,"stargazers_count":30,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-26T03:44:28.162Z","etag":null,"topics":["docker","lamp-devstack","mysql","php","xdebug"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/jakubboucek/lamp-devstack-php","language":"Roff","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/jakubboucek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"zenodo":null}},"created_at":"2019-08-31T22:06:46.000Z","updated_at":"2025-04-21T00:34:54.000Z","dependencies_parsed_at":"2023-12-29T06:29:07.388Z","dependency_job_id":"08ef7556-a1c4-4599-8fb5-cfd259e8dce0","html_url":"https://github.com/jakubboucek/docker-lamp-devstack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jakubboucek/docker-lamp-devstack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubboucek%2Fdocker-lamp-devstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubboucek%2Fdocker-lamp-devstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubboucek%2Fdocker-lamp-devstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubboucek%2Fdocker-lamp-devstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakubboucek","download_url":"https://codeload.github.com/jakubboucek/docker-lamp-devstack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubboucek%2Fdocker-lamp-devstack/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265437774,"owners_count":23765132,"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":["docker","lamp-devstack","mysql","php","xdebug"],"created_at":"2024-11-10T23:14:32.581Z","updated_at":"2025-07-15T14:04:49.002Z","avatar_url":"https://github.com/jakubboucek.png","language":"Roff","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LAMP devstack Docker images\nImages for local development in [LAMP devstack](https://en.wikipedia.org/wiki/LAMP_(software_bundle))\n\n### Why use prebuilt images instead of building your own?\n\nThese images are designed for efficient local development of small to medium-sized PHP projects typically deployed\non shared hosting environments. Key benefits of this approach include:\n\n- **Instant startup with no build step** – the images are publicly available and ready to use; simply launch them\n    using `docker compose`.\n- **Supports multiple projects with different PHP versions** – easily switch container versions without modifying\n    the base image.\n- **Resource reuse and disk space efficiency** – all projects share the same base image, minimizing storage footprint\n    and startup time.\n- **Optimized for common development needs** – the environments closely mirror typical shared hosting setups, without\n    unnecessary extras.\n- **Runtime customization without rebuilding** – key runtime parameters can be configured via environment variables\n    at container start time ([see below](#extended-configuration)), eliminating the need to build custom images\n    for minor environment tweaks.\n\nInstead of maintaining and rebuilding separate images for each project, you can rely on a consistent, maintained set\nof base images designed to cover most standard development workflows — with no setup overhead and minimal resource duplication.\n\n* [Built images](#built-images)\n* [Main features](#main-features)\n* [Basic usage](#basic-usage)\n    + [Version tags](#version-tags)\n    + [Using MySQL](#using-mysql)\n    + [Connecting to MySQL](#connecting-to-mysql)\n    + [Windows issue](#windows-issue)\n* [Extended configuration](#extended-configuration)\n    + [PHP configuration](#php-configuration) \n    + [Document Root](#document-root)\n    + [Timezone](#timezone)\n    + [Temporary, upload and session storage directory](#temporary-upload-and-session-storage-directory)\n    + [Apache – listening port](#apache--listening-port)\n    + [Other PHP configurations](#other-php-configurations)\n* [Advanced usage](#advanced-usage)\n    + [Xdebug](#xdebug)\n    + [Debugging CLI with PhpStorm](#debugging-cli-with-phpstorm)\n* [Building notes](#building-notes)\n\n\n## Built images\n\n- PHP: [`jakubboucek/lamp-devstack-php`](https://hub.docker.com/r/jakubboucek/lamp-devstack-php)\n- MySQL: [`jakubboucek/lamp-devstack-mysql`](https://hub.docker.com/r/jakubboucek/lamp-devstack-mysql)\n\n## Main features\n- architecture: `linux/amd64`\n- current **PHP** versions: 8.4, 8.3, 8.2 and 8.1\n- unsupported **PHP** versions also available: 8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.6, 5.5 and 5.4 (with limited stability,\nunoptimized, unmaintained)\n- current versions of **MariaDB** 11.7, 11.4, 10.11, 10.6, 10.5 and RC pre-release of 11.8\n- unsupported versions of **MariaDB** 11.6, 11.5, 11.3, 11.2, 11.1, 11.0, 10.10, 10.9, 10.8, 10.7, 10.4 and 10.3 (unmaintained)\n- current version of **Apache** 2.4 (in non-CLI images)\n- current version of **Xdebug** 3.4 (in debug images)\n- extra PHP extensions:\n    [`bmath`](https://www.php.net/manual/en/book.bc.php),\n    [`bz2`](https://www.php.net/manual/en/book.bzip2.php),\n    [`calendar`](https://www.php.net/manual/en/book.calendar.php),\n    [`exif`](https://www.php.net/manual/en/book.exif.php),\n    [`gd`](https://www.php.net/manual/en/book.image.php) with PNG, WebP, AVIF (for PHP 8.1+), FreeType fonts support\n    [`gettext`](https://www.php.net/manual/en/book.gettext.php),\n    [`gmp`](https://www.php.net/manual/en/book.gmp.php),\n    [`imap`](https://www.php.net/manual/en/book.imap.php) (up to PHP 8.3),\n    [`intl`](https://www.php.net/manual/en/book.intl.php),\n    [`memcached`](https://www.php.net/manual/en/book.memcached.php),\n    [`mysqli`](https://www.php.net/manual/en/book.mysqli.php),\n    [`pdo_mysql`](https://www.php.net/manual/en/book.pdo.php),\n    [`opcache`](https://www.php.net/manual/en/book.opcache.php),\n    [`pcntl`](https://www.php.net/manual/en/book.pcntl.php),\n    [`semaphore`](https://www.php.net/manual/en/book.sem.php),\n    [`sockets`](https://www.php.net/manual/en/book.sockets.php),\n    [`soap`](https://www.php.net/manual/en/book.soap.php),\n    [`sodium`](https://www.php.net/manual/en/book.sodium.php),\n    [`xsl`](https://www.php.net/manual/en/book.xsl.php) and\n    [`zip`](https://www.php.net/manual/en/book.zip.php)\n- Apache modules: [`expires`](https://httpd.apache.org/docs/current/mod/mod_expires.html),\n    [`headers`](https://httpd.apache.org/docs/current/mod/mod_headers.html) and\n    [`rewrite`](https://httpd.apache.org/docs/current/mod/mod_rewrite.html)\n- Apache `DocumentRoot` changed to: `/var/www/html/www` (configurable by [ENV](#document-root))\n- PHP image comes with [Composer 2.8+](https://getcomposer.org/) and [Git 2.39+](https://git-scm.com/) to \n    use it in guest shell  \n- MySQL properly configured to use `utf8mb4` as a default charset, an optional support of Windows Host is also available\n- timezones are correctly supported\n- optimized for small image size and short load times\n\n\n## Basic usage\nCopy the [`docker-compose.yml`](docker-compose.yml) file\n([download](https://downfile.github.io/download?url=https%3A//raw.githubusercontent.com/jakubboucek/docker-lamp-devstack/master/docker-compose.yml\u0026file=docker-compose.yml))\nto your project's root (you don't need to clone/download the whole repo, just copy that one file).\n\nCall `docker compose up`. After docker container runs, your project will be served at http://localhost:8080/.\n\nOnly `/www` subdirectory from your project is served but PHP scripts have access to the whole project's root.  \nThat means only the `/www` subdirectory is publicly accessible from web, not your whole application.\n\nExample:\n```\nmy_project/                 \u003c-- project's root\n    docker-compose.yml      \u003c-- docker config from this repository\n    www/                    \u003c-- Document Root, accessible at http://localhost:8080/\n        index.php           \u003c-- your PHP app\n        logo.png            \u003c-- accessible at http://localhost:8080/logo.png\n        gallery/\n            photo1.jpg      \u003c-- accessible at http://localhost:8080/gallery/photo1.jpg\n    vendor/\n        autoload.php        \u003c-- not accessible but PHP can via: require(__DIR__ . '/../vendor/autoload.php')\n```\n\n### Version tags\n\nImages are tagged by the cascaded SemVer:\n- `jakubboucek/lamp-devstack-php:latest` – means `latest` available stable PHP image,\n- `jakubboucek/lamp-devstack-php:8` – represents the highest PHP image of `8` version, but lower than `9.0.0`,\n- `jakubboucek/lamp-devstack-php:8.4` – represents the highest PHP image of `8.4` version, but lower than `8.5.0`,\n- `jakubboucek/lamp-devstack-php:8.4.0` – represents most specific PHP image, directly version `8.4.0`.\n\n**Legacy PHP** images are tagged using different strategy, only latest revision for each minor version is available,\nuse `-legacy` tag suffix:\n\n- `jakubboucek/lamp-devstack-php:8.0-legacy`\n- `jakubboucek/lamp-devstack-php:7.4-legacy`\n- `jakubboucek/lamp-devstack-php:7.3-legacy`\n- `jakubboucek/lamp-devstack-php:7.2-legacy`\n- `jakubboucek/lamp-devstack-php:7.1-legacy`\n- `jakubboucek/lamp-devstack-php:7.0-legacy`\n- `jakubboucek/lamp-devstack-php:5.6-legacy`\n- `jakubboucek/lamp-devstack-php:5.5-legacy`\n- `jakubboucek/lamp-devstack-php:5.4-legacy-fixed`\n\n\u003e Note: Version 5.4 is using `-fixed` suffix because is unable to rebuild them from scratch. \n\nAll PHP images have alternative variants with XDebug extension preinstalled, use `-debug` tag suffix, example:\n- `jakubboucek/lamp-devstack-php:debug`\n- `jakubboucek/lamp-devstack-php:8-debug`\n- `jakubboucek/lamp-devstack-php:8.4-debug`\n- `jakubboucek/lamp-devstack-php:8.4.0-debug`\n- `jakubboucek/lamp-devstack-php:7.4-legacy-debug`\n\nAll PHP images also have alternative CLI variants, use `-cli` tag suffix, example:\n- `jakubboucek/lamp-devstack-php:cli`\n- `jakubboucek/lamp-devstack-php:8-cli`\n- `jakubboucek/lamp-devstack-php:8.4-cli`\n- `jakubboucek/lamp-devstack-php:8.4.0-cli`\n- `jakubboucek/lamp-devstack-php:7.4-legacy-cli`\n\n### Using MySQL\nMySQL server starts at the same time as the web server.\n\nAvailable MySQL images:\n- 10.5: `jakubboucek/lamp-devstack-mysql:10.5`\n- 10.6: `jakubboucek/lamp-devstack-mysql:10.6`\n- 10.11: `jakubboucek/lamp-devstack-mysql:10.11`\n- 11.4: `jakubboucek/lamp-devstack-mysql:11.4`\n- 11.7: `jakubboucek/lamp-devstack-mysql:latest`\n\nLTS (long-term support) MySQL images (currently 11.4):\n- `jakubboucek/lamp-devstack-mysql:lts`\n\nThe RC pre-release of MySQL 11.8 images have the `-rc` suffix, example:\n- `jakubboucek/lamp-devstack-mysql:11.8-rc`\n- `jakubboucek/lamp-devstack-mysql:11.8-1-rc`\n\n### Connecting to MySQL\n\nFrom **Host** (external connection), MySQL is accessible at:\n- host: `127.0.0.1`\n- port: `33060`\n\nFrom **Guest** (internal connection), MySQL is accessible at:\n- host: `mysqldb`\n- port: `3306`\n\nDefault credentials:\n- user: `root`\n- password: `devstack`\n- database name: `default`\n\nIf you are connecting to the MySQL server from a PHP application running **inside** Docker, use the **Guest** access\nvalues, but when you're connecting from outside (for example, from your computer, using\n[HeidiSQL](https://www.heidisql.com/) or [Sequel](https://sequel-ace.com/)), use host access.\n\nPHP example:\n```php\n$pdo = new PDO('mysql:host=mysqldb;dbname=default;charset=utf8mb4', 'root', 'devstack');\n// or\n$mysqli = new mysqli('mysqldb', 'root', 'devstack', 'default');\n$mysqli-\u003eset_charset('utf8mb4');\n```\n\nImages does not contains any MySQL editor/manager (PMA nor Adminer), so you need to use your own tool.\n\n### Windows issue\n\nMySQL may crash when Host is running Windows:\n\n```\nThe Auto-extending innodb_system data file './ibdata1' is of a different size 0 pages than specified in the .cnf file\n```\n\nYou can try to fix it by adding [`mysql-windows.cnf`](mysql/mysql-windows.cnf)\n([download](https://downfile.github.io/download?url=https%3A//raw.githubusercontent.com/jakubboucek/docker-lamp-devstack/master/mysql/mysql-windows.cnf))\nand add it to the MySQL config directory `/etc/mysql/conf.d/` inside the Docker container.\n\nIn `docker-compose.yml` file, just link this downloaded file to `volume` section:\n\n```yaml\nvolumes:\n    - \"./.docker/mysql/data:/var/lib/mysql\"\n    - \"./mysql-windows.cnf:/etc/mysql/conf.d/mysql-windows.cnf\"\n```\n\n## Extended configuration\n\n### PHP configuration \n\nCertain [`php.ini` directives](https://www.php.net/manual/en/ini.list.php) can be modified without manipulating the\nimage content, using environment variables. It can be defined in `docker run` command or in\n`docker-compose.yml` file.\n\nConfigurable directives:\n\n- `PHP_ERROR_REPORTING` - change the [`error_reporting` directive](https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting) (default value: `32767`, means `E_ALL`)\n- `PHP_DISPLAY_ERRORS` - change the [`display_errors` directive](https://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors) (default value: `1`)\n- `PHP_DISPLAY_STARTUP_ERRORS` - change the [`display_startup_errors` directive](https://www.php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors) (default value: `1`, on PHP 7: `0`)\n- `PHP_ERROR_LOG` – change the [`error_log` directive](https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log) (default value: *empty*)\n- `PHP_LOG_ERRORS` – change the [`log_errors` directive](https://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors) (default value: `0`)\n- `PHP_MAX_EXECUTION_TIME` – change the [`max_execution_time` directive](https://www.php.net/manual/en/info.configuration.php#ini.max-execution-time) (default value: `30`)\n- `PHP_MEMORY_LIMIT` – change the [`memory_limit` directive](https://www.php.net/manual/en/ini.core.php#ini.memory-limit) (default value: `2G`)\n- `PHP_SESSION_SAVE_PATH` – change the [`session.save_path` directive](https://www.php.net/manual/en/session.configuration.php#ini.session.save-path) (default value: *empty*)\n- `PHP_OPCACHE_BLACKLIST_FILENAME` – change the [`opcache.blacklist_filename` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.blacklist-filename) (default value: *empty*)\n- `PHP_OPCACHE_ENABLE` – change the [`opcache.enable` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.enable) (default value: `1`)\n- `PHP_OPCACHE_ENABLE_CLI` – change the [`opcache.enable_cli` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.enable-cli) (default value: `0`)\n- `PHP_OPCACHE_JIT` – change the [`opcache.jit` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit) (default value: `tracing`, on PHP 8.4 [changed](https://php.watch/versions/8.4/opcache-jit-ini-default-changes): `disable`)\n- `PHP_OPCACHE_JIT_BUFFER_SIZE` – change the [`opcache.jit_buffer_size` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit-buffer-size) (default value: `0`, on PHP 8.4 [changed](https://php.watch/versions/8.4/opcache-jit-ini-default-changes): `64M`)\n- `PHP_OPCACHE_MEMORY_CONSUPTION` – change the [`opcache.memory_consumption` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.memory-consumption) (default value: `128`)\n- `PHP_OPCACHE_PRELOAD` – change the [`opcache.preload` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.preload) (default value: *empty*)\n- `PHP_OPCACHE_PRELOAD_USER` – change the [`opcache.preload_user` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.preload-user) (default value: *empty*)\n- `PHP_OPCACHE_VALIDATE_TIMESTAMPS` – change the [`opcache.validate_timestamps` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.validate-timestamps) (default value: `1`)\n- `PHP_OPCACHE_REVALIDATE_FREQ` – change the [`opcache.revalidate_freq` directive](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.revalidate-freq) (default value: `2`)\n\nExample for `docker run` command:\n\n```shell\ndocker run --rm -e PHP_MEMORY_LIMIT=1G jakubboucek/lamp-devstack-php php -i\n```\n\nExample `docker-compose.yml` file:\n\n```yaml\nenvironment:\n    PHP_MEMORY_LIMIT: 1G\n```\n\n### Document Root\n\nCreate custom `APACHE_DOCUMENT_ROOT` environment variable with the path to Document Root as the value.\n\nYou can also specify it directly with `docker run`:\n\n```shell\ndocker run -it --rm -e APACHE_DOCUMENT_ROOT=/my-web jakubboucek/lamp-devstack-php\n```\n\nYou can also put it to your `docker-compose.yml` file:\n\n```yaml\nenvironment:\n    APACHE_DOCUMENT_ROOT: \"/my-web\"\n```\n\n### Timezone\n\nThe default timezone is not defined (`UTC` will be used). You can modify the default timezone by setting the `TZ`\nenvironment variable to the desired timezone name (e.g., `Europe/Prague`).\n\nIt can also be specified directly with `docker run`:\n\n```shell\ndocker run -it --rm -e TZ=Europe/Prague jakubboucek/lamp-devstack-php\n```\n\nOr in your `docker-compose.yml` file:\n\n```yaml\nenvironment:\n    TZ: Europe/Prague\n```\n\nThe `TZ` environment variable is recognized by Linux tools as well. By creating the variable you modify the default\ntimezone for the whole Linux operating system, PHP, and also MySQL.\n\nAt PHP since version 8.2 is `TZ` variable set to `'UTC'` by default (otherwise is empty). \n\n### Temporary, upload and session storage directory\n\nPHP is using native Linux temporary directory for all own temporary files (including session and upload storage). This\nimage does not provide any custom way to modify them. You can use the `TEMPDIR` environment variable to modify all of\nthem.\n\nYou can specify it directly with `docker run`:\n\n```shell\ndocker run -it --rm -e TEMPDIR=/var/www/temp jakubboucek/lamp-devstack-php\n```\n\nOr in the `docker-compose.yml` file:\n\n```yaml\nenvironment:\n  TEMPDIR: /var/www/temp\n```\n\nNote: The directory MUST already exists and MUST be writable for all users (`0777`), otherwise PHP can be unstable or\ncan lose data (e.g. sessions data). Moving the temporary directory to a volume shared with the Host can have a big\nimpact on performance.\n\nThe `TEMPDIR` environment variable is also recognized by Linux tools. By setting that variable you modify the default\ntemporary directory for the whole Linux operating system, PHP, and also MySQL.\n\n### Apache – listening port\n\nApache is by default configured to listening on TCP port 80. You can use the `PORT` environment variable to modify\nport number where is apache listening to HTTP Requests.\n\nNote: This variable is affect Apache runtime only. When you change port value, don't forget manually publish that port\nto host, when you want to access it from here or expose port to use at network.\n\nYou can specify it directly with `docker run`:\n\n```shell\ndocker run -it --rm -e PORT=8080 -p 8080:8080 jakubboucek/lamp-devstack-php\n```\n\nOr in the `docker-compose.yml` file:\n\n```yaml\nports:\n  - \"8080:8080\"\nenvironment:\n  PORT: 8080\n```\n\nThe `PORT` environment variable is also used by most known services\n(e.g. [Google Cloud Run](https://cloud.google.com/run/docs/container-contract#port)).\n\n### Other PHP configurations\n\nSettings other than those listed above can be set in your INI file. You can add it to `/usr/local/etc/php/conf.d`\ndirectory using [Volume mounting](https://docs.docker.com/storage/volumes/#choose-the--v-or---mount-flag)\nwithout building a custom image.\n\nCreate `custom.ini` file in your project's root, for example:\n\n```ini\nsendmail_from = any@my-domain.tld\n```\n\nMount the file to the container using the `volume` directive in your `docker-compose.yml` file:\n\n```yaml\nvolumes:\n  - \"./custom.ini:/usr/local/etc/php/conf.d/custom.ini\"\n```\n\nCheck available [`docker-compose.yml`](docker-compose.yml) file for an example of how to use the `volume` directive.\n\n## Advanced usage\n\n### Xdebug\n\nI've also prepared a PHP image with Xdebug. Use [`docker-compose-debug.yml`](docker-compose-debug.yml)\n([download](https://downfile.github.io/download?url=https%3A//raw.githubusercontent.com/jakubboucek/docker-lamp-devstack/master/docker-compose-debug.yml\u0026file=docker-compose.yml))\ninstead (copy and rename it to `docker-compose.yml`).\n\nXdebug is not started by default, you must call requests with [relevant trigger](https://xdebug.org/docs/all_settings#start_with_request#trigger)\n(tip: [how to fire triggers from your browser](https://www.jetbrains.com/help/phpstorm/2021.1/browser-debugging-extensions.html)).\n\nThese features are enabled in Xdebug:\n\n- [`Profiler`](https://xdebug.org/docs/profiler)\n- [`Step Debugger`](https://xdebug.org/docs/step_debug)\n- [`Tracing`](https://xdebug.org/docs/trace)\n\nProfiler a Tracing outputs are saved to `/var/www/html/log` directory inside Container. Output files are\npropagated to the Host to `log/` directory (this directory must be manually created first).\n\nYou can change the output directory through `XDEBUG_CONFIG` environment variable  with `output_dir` parameter.\n\nIn [`docker-compose.yml`](docker-compose-debug.yml) file modify the `environment` section, for example:\n\n```yaml\nenvironment:\n    XDEBUG_CONFIG: \"client_host=host.docker.internal output_dir=/another/dir\"\n    #                                                ^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nStarting with Xdebug 3.4, Profiler a Tracing outputs are compressed with GZip. You can turn off GZip compression through\nthe `XDEBUG_CONFIG` environment variable with `use_compression` parameter and value `false`.\n\nIn [`docker-compose.yml`](docker-compose-debug.yml) file modify `environment` section, for example:\n\n```yaml\nenvironment:\n    XDEBUG_CONFIG: \"client_host=host.docker.internal use_compression=false\"\n    #                                                ^^^^^^^^^^^^^^^^^^^^^\n```\n\n### Debugging CLI with PhpStorm\n\nWith PhpStorm, you can also debug CLI scripts. First, you need to set the Server name,\n[PhpStorm requires it for path mapping](https://blog.jetbrains.com/phpstorm/2012/03/new-in-4-0-easier-debugging-of-remote-php-command-line-scripts/).\n\nIn [`docker-compose.yml`](docker-compose-debug.yml) file, add `PHP_IDE_CONFIG` environment variable with `serverName`\nparameter:\n\n```yaml\nenvironment:\n    PHP_IDE_CONFIG: \"serverName=docker-cli\"\n```\n\n## Building notes\nIf you need to build custom images based on this repo, see [Build notes](build-notes.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubboucek%2Fdocker-lamp-devstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubboucek%2Fdocker-lamp-devstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubboucek%2Fdocker-lamp-devstack/lists"}