All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
This release introduces significant enhancements to the development environment, including a new PHP 8.4 Docker image for early adopters and developers wanting to test future compatibility. The MageOS support has been substantially improved, and a new RabbitMQ 3.13 image has been added. Several quality-of-life improvements have been implemented, such as better unit testing tools, enhanced SSL generation for multi-site setups, and comprehensive documentation updates. A notable breaking change is the shift in the download command syntax - it now expects the edition type before the version number (ex: bin/download community 2.4.7-p3 instead of the previous bin/download 2.4.7 community). Additionally, all Docker images have been updated to maintain parity with current Magento version requirements.
bin/test helper scripts to execute unit tests PR #1157bin/ece-patches command PR #1171bin/check-dependencies script PR #1175bin/xdebug command PR #1245bin/blackfire script to enable, disable, or check status of Blackfire extension PR #1115.bin/check-dependencies script PR #1112.bin/check-dependencies script which provides helpful recommendations for dependencies tailored to the chosen Magento version PR #1018.nginx Docker images for versions 1.22, 1.24 PR #1019.php-fpm 8.3 Docker image for Magento 2.4.7 support PR #1019.opensearch 2.12 Docker image for Magento 2.4.7 support PR #1019.elasticsearch 7.16 and 8.11 Docker images for previous Magento versions support PR #1019.elasticsearch 8.13 Docker image for Magento 2.4.7 support PR #1019.rabbitmq 3.8 Docker image for previous Magento versions support PR #1019.rabbitmq 3.12 Docker image for Magento 2.4.7 support PR #1019.php-fpm Docker images to officially compatible Composer versions PR #1019.bin/configure-linux helper script to assist with easier Linux setup PR #1016.bin/create-user script to allow for easy creation of Magento admin user & customer PR #1040.bin/docker-stats to simplified output PR #1083.strace command, providing developers with powerful tools for diagnosing and troubleshooting PR #1033.bin/log command to view Magento logs in real-time PR #1060.bin/docker-stats command for container monitoring PR #533.bin/setup-pwa-studio-sampledata command to install Magento PWA Studio sample data, facilitating easier PWA development setups #1045.bin/deploy script to deply Magento in pipeline PR #926.bin/magento-version script which outputs current Magento version PR #931.bin/spx script to enable or disable SPX PR #1074./usr/bin/env to discover bash location PR #879.npm install of puppeteer due to missing Chromium PR #848.bin/update PR #707.bin/analyse command to statically analyse code with PHPStan 8601c2f7.node & npm to PHP images #694./etc/hosts PR #693.This release brings streamlined PHP Docker images (saving 300MB on previous images), a brand new PHP 8.1 image with full support for Magento 2.4.4, a proper Elasticsearch health check during setup, and ability to detect memory assigned to Docker on startup (which will prevent failed installations). Elasticsearch, Redis & RabbitMQ Docker images have also all been updated to their recently supported Magento versions.
bin/setup script so it can run completely automated PR #633.bin/stopall script to stop all running containers #599.There has been an ongoing issue with Docker for Mac + M1 chips (Apple Silicon) which causes a 5-second delay in network requests (see #5626). A fix has been implemented in this release that works around this issue, adding extra_hosts directives in the docker-compose.yml file. This update should be backwards-compatible, but will break existing setups that use custom Docker networks (this is an uncommon scenario). See notes at the top of docker-compose.yml for how to configure this project for custom Docker networks.
sendmail_path in php.ini #556.bin/devconsole command not working 646f617.bin/setup-composer-auth does not persist auth creds #567.8.0-fpm-develop for Magento 2.4.4 support (note: still has -develop tag).~/.ssh volume mount references to docker-compose.yml to ease maintenance.This is one of the biggest releases of docker-magento 💥! This major update includes support for Apple Silicon (M1/M1X) chips, as well as SSH support for fully native filesystem speed.
All the images are now multi-arch builds, meaning they can install on both AMD & ARM chipsets. Additionally, by setting up your IDE to connect to Docker over SSH/SFTP to avoid selective filesystem syncing.
The docker-compose configuration files have also been streamlined & simplified, with dedicated files for both SSH and Linux setups. Read more about these updates at https://github.com/markshust/docker-magento#ssh and https://github.com/markshust/docker-magento#linux respectively.
Many issues have been resolved, and long-standing pull requests have been merged. A special thanks to @drpayyne for multi-arch support, @rangerz for their massive contributions, as well as many others for their continued work & pull requests submitted to this project.
onelinesetup script to use version 2.4.3-p1 by default.bin/cache-clean with improved logic PR #400.docker-compose.dev.yml file to only contain volume mounting information.mailcatcher image to replace mailhog for multi-arch support #511.docker-compose.dev-ssh.xml to streamline SSH setup.docker-compose.dev-linux.xml to streamline Linux setup.bin/setup-domain script PR #429.bin/n98-magerun2 #545.bin/setup-grunt #484.7.9, 7.9.3-0 #488.auth.json not properly set after installation #42.bin/remove not removing containers in newer versions of Docker Compose.bin/setup-composer-auth file to setup Composer auth creds.7.3-fpm-12 & 7.4-fpm-5.7.3-fpm-11 or 7.4-fpm-4. These images are exactly the same other than being pegged to Xdebug 2.percona:5.7 until issues with MySQL 8.0 image are resolved.7.7, 7.7.1-0 #392.db service to use MySQL 8.0 Docker image.bin/xdebug, including new status and toggle commands #332.community or enterprise param to pick version to install b2399ff1.1.10.15 to avoid nag update messages in new PHP Docker images 7.3-fpm-9, 7.4-fpm-2.1.18-4bin/download falls back to using Composer if archive download fails or is not found.bin/setup-integration-tests script to setup integration tests 3c021ff.MYSQL_HOST environment variable to env/db.env file.1.18-3 Docker images uses Alpine as base image PR #306.env/db.env file for database connection credentials PR #302.max_allowed_packet to 64M in docker-compose.yml file PR #303.docker-compose.yml now uses Alpine images for Redis and RabbitMQ #305.docker-compose.yml file now uses new Alpine images for Redis, RabbitMQ & Nginx.bin/setup script updated to use Redis for cache and session directly in installer script PR #304.bin/setup script sets Admin URL to /admin PR #304.phpfpm container rather than all containers PR #314.bin/setup script moves .vscode directory to src after install 846d02c.php:7.4-fpm Docker image has been setup with full support for Magento 2.4 (see images/php/7.4).bin/download script now falls back to Hypernode's Magento Download mirror in the event the archive doesn't exist or fails to download from Nexcess.:cached rather than :delegated. The delegated volume functionality is changing in a future version of Docker for Mac to use Mutagen volumes, and the implementation is very buggy & awkward. Using the cached flag retains the current functionality we've been using in delegated without any changes (confirmed in docker/for-mac#1592).bin/setup-ssl-ca so SSL generation works on Linux (#222)php Docker images to use most recent version of Composer (1.10.9).bin/setup script now runs composer update rather than composer install. There was an error happening with composer install, and with the start of the project it's best to just get the most recent Composer packages anyway.bin/setup script now sets Elasticsearch 7 as the default catalog search engine directly when executing bin/magento setup:install.latest tags have been removed on all Docker images. It is bad practice to not use a specific version. The latest tag will no longer be recompiled when new images are released.php:7.2 Docker images have been deprecated, as that version is no longer supported in Magento.elasticsearch:6 Docker images have been deprecated, as those versions are no longer supported in Magento.bin/setup for google-shopping-api package, as that is only applicable to older versions of Magento.bin/dev-urn-catalog-generate to account for new versions of PHPStorm (simplified).magento-nginx:1.18-2.magento-nginx:1.18 Docker image.magento-elasticsearch:7.6 Docker image.with-samples- prefix (thanks Nexcess!).bin/setup helper script to enable Elasticsearch 7 and automatically reindex during installation.docker-compose.yml file now references the magento-nginx:1.18-0 and magento-elasticsearch:7.6.2-0 Docker images.docker-compose.yml adds the new environment variable "discovery.type=single-node" for compatibility with Elasticsearch 7.nginx:1.18 Docker image sets fastcgi_buffer_size 64k; and fastcgi_buffers 8 128k; directives for Magento 2.3.5 compatibility.Temando_Shipping module conflicts with sample data installation. Added fix to bin/magento helper script to disable this module, install sample data, then re-enable it.--remove-orphans flag to bin/start script to remove orphaned containers (applicable to cron service).memory_limit to 4G to get PHPUnit tests to passupload_max_filesize and post_max_size to 100M just to prevent issues from being filed in the future7.2-fpm-9, 7.3-fpm-6bin/n98-magerun2 instead of bin/setup scriptmax_input_vars to 10000 to prevent Invalid Form Post submission errorsbin/setup-ssl-ca scriptbin/copytocontainer script not copying files to proper directoryvendor directory.bin/setup-ssl script to generate valid SSL certificates #211markoshust/magento-nginx:1.13-8 image containing mkcert scriptbin/setup to use new bin/setup-ssl scriptHappy new year! 🎉
1.0.17 to support HASH_VERSION_ARGON2ID13 #1937.2-fpm-5, 7.3-fpm-2src directory to be a symlinkcompose folder, there is no longer specific magento-2 and magento-2-windows specific folders. Windows support works on Docker with WSL.bin/copyfromcontainer and bin/copytocontainer so subdirectories are now properly copied from and to the containerbin/fixowns script now includes the ability to fix ownerships at the subdirectory levelbin/copyfromcontainer and bin/copytocontainer scripts now fixes permissions and ownerships of just the subdirectories that are copiedbin/copyfromcontainer and bin/copytocontainer referencing incorrect destination file locationsbin/pwa-studio and bin/setup-pwa-studio bash scriptsbin/update file for previous versions that did not include ithirak/prestissimo composer package to bin/setup helper script for much faster composer installs~/.docker-magento folder.bin/setup to resolve the error24.0.0 referenced vertex/module-tax being removed but for some reason it was not removed, now it is7.3-fpm-0 for Magento 2.3.3 supportmarkoshust/magento-elasticsearch:6.5.4-0 which comes bundled with icu and phonetic plugins. The initial 6.5 version is for parity with Magento Cloud.bin/update helper script that updates your docker-magento setup to the latest version.gitignore file to project root to ignore src directory. It is recommended to keep your root docker config files in one repository, and your Magento code setup in another. This ensures the Magento base path lives at the top of one specific repository, which makes automated build pipelines and deployments easy to manage, and maintains compatibility with projects such as Magento Cloud.bin/n98-magerun and bin/devconsole helper scripts.bin/setup-pwa-studio (BETA) helper script to easily install PWA Studio, usage accepts a single parameter being the site URL you wish PWA Studio to connect to (ex. bin/setup-pwa-studio magento2.test)bin/pwa-studio (BETA) helper script to easily run the PWA Studio NodeJS web serverbin/dev-urn-catalog-generate helper script has been updated for compatibility with more recent versions of PHPStormvertex/module-tax Composer package installs correctly as of 2.3.0, so the line within the bin/setup script which prevented it from being installed was removed. If one is having issues installing an older version of Magento 2, add the following line to your composer.json file to prevent this package from being installed:{"replace": { "vertex/module-tax": "*" }}
php base Docker image changed from Debian Stretch to Buster and broke a lot of packages, which caused a failed build for 7.1-fpm-12 & 7.2-fpm-3 tags. This update pegs the php Docker image to Debian Stretch.7.1-fpm-12, 7.2-fpm-3libsodium-dev package and sodium PHP extension for Magento 2.3.2 support.7.1-fpm-10, 7.2-fpm-1bin/status to check container status.bin/dev-urn-catalog-generate to look at src folder as project root.var/log folder in docker-compose.dev.yml for debugging purposes.docker-compose.dev.yml file to easily mount auth.json file, with updated usage in READMEbin/fixowns now fixes permissions on /var/www instead of /var/www/html folder.~/.composer directory in docker-compose.dev.yml file.bin/copytocontainer now calls bin/fixowns afterwards to ensure correct file ownerships are set.bin/removevolumes to remove docker volumes easily.vendor folder and force of composer install to bin/setup script. When installed from zip, it's possible Magento isn't installing all deps properly and assigning wrong permissions in Docker. Forcing a reinstall fixes this issue.bin/setup to speed up initial requests.bin/dev-urn-catalog-generate to copy file to host.🎅 Santa Shust wishes you a very Merry Christmas!
bin/start helper script no longer copies docker volumes introduced in version 18.0.0. The docker-compose.yml setup has been updated to only reference native Docker volumes. A new docker-compose.dev.yml file has been added to reference development-specific settings, including host bind mounts. Only .composer, app/code, app/design, app/etc, composer.json, composer.lock, and nginx.conf filesystem locations are host bind mounted. Being very specific in which files and folders are being mounted leads to drastically faster response times. The main culprit in performance penalties before was mounting generated and var folders as host bind mounts. These directories are considered "caching" folders and should never be host bind mounted.bin/cli or bin/bash commands to go into the container to access the files. You can also use the new bin/copyfromcontainer and bin/copytocontainer bin helper scripts to copy files & folders from or to containers.docker-compose.dev.yml file! Just be aware there is a performance penalty for doing so.nginx Docker image to look for nginx.conf file instead of nginx.conf.sample file. This will now require copying the nginx.conf.sample file to nginx.conf, or using a host bind mount. This location allows overrides that aren't overridden when you upgrade Magento, and allow customizations for projects. Tagged new image as markoshust/magento-nginx:1.13-7.bin/setup helper script uses only the docker-compose.yml file, with only native docker volume mounts.bin/start helper script uses both docker-compose.yml and docker-compose.dev.yml files. Development-only specifications should now be placed within docker-compose.dev.yml, such as host bind volume mounts.docker-compose.yml file now uses a sockdata volume mount to mount the /sock directory. You may need to delete the appdata volume mount (docker volume rm NAME) and rebuild it with bin/copytocontainer --all.bin/fixperms within bin/setup to speed up initial installation.bin/copyfromcontainer and bin/copytocontainer helper scripts to copy folders or files from or to containers. Specify the --all option to copy entire web directory structure.bin/rootnotty to run root commands with no TTY (needed for unassisted one-line setup with new volume setup).bin/fixowns to fix filesystem ownerships within the Docker container.docker-compose.dev.yml file for development-only specifications.bin/copydir and bin/copydirall helper scripts.elasticsearch. Save, clear the cache, and run bin/magento indexer:reindex to enable.7.2-fpm-0 php image.bin/start to ignore call to bin/copydirall when ran on Linux.nginx.conf.sample file from root installation directory for configuration, instead of having standalone configuration.bin/cli usage and created bin/clinotty for non-tty sessions. Updated calls in bin/setup and other scripts where appropriate to bin/clinotty.bin/start now includes a call to bin/copydirall after the containers start. This helper script runs a docker cp command of all Magento directories from the container to the host. There is still a bind mount setup to ./src root directory.docker cp command runs, while retaining their named volume status within the Docker container.bin/start now runs in daemon mode, as we also need to run bin/copydirall immediately after starting containers so data syncs back to the host (and vice versa). This also eliminates the need to to have a terminal window open all the time for keeping containers running.bin/restart helper script to stop and start all containers.bin/remove helper script to remove all containers.bin/copydir which copies whichever folder you wish from the container to the host.bin/copydirall which copies all Magento folders from the container to the host.lib/template and lib/onelinesetup for much easier installation methods.bin/initloopback along with any references to 10.254.254.254 ip address. This may break existing Xdebug setups. Note that this ip address has been replaced with host.docker.internal, which should automatically resolve back to the host machine.dev/auth.json to dev/composer/auth.jsonclient_max_body_size 20M to nginx.confupload_max_filesize = 20M and post_max_size = 20M to php.inijohn.smith and password password123.dev/auth.json file used instead of ~/.composer/auth.json file, so each project can have different auth credentials.cron service is now disabled by default. This services uses higher CPU and should probably only be enabled when working on cron-related tasks (or on production).