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.
- PHP image
8.1-fpm-developnow available for testing purposes.
- Disable "Composer is slower because of Xdebug" message 1990d84.
- Updated verbiage in setup on how to start cron c3ba47d.
- Fixed "The input device is not a TTY" error during setup 8aada97.
- Expose port 9003 on PHP Docker image for Xdebug 263e40d.
- Disable Xdebug by default for PHP 7.3 263e40d.
- Updated PHP 8.1 image to use official GA version 263e40d.
- Fixed additional issue of waiting for Elasticsearch/RabbitMQ connection on Mac #442.
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.
- Added Imagick PHP extension #530.
- Fixed issue with onelinesetup script failing on download 92b803c 67c76b4.
- Fix Shellcheck failures for bin/setup-ssl-ca #558.
- Fix wrong
sendmail_pathin php.ini #556. - Ensure .composer directory isn't created by root #562.
- Fixed
bin/devconsolecommand not working 646f617. - Fixed
bin/setup-composer-authdoes not persist auth creds #567. - Fixed documentation around Xdebug port on Linux 90af7fa.
- Fixed waiting for Elasticsearch/RabbitMQ connection on Mac #442.
- Updated info about MySQL backups and existing projects in README 86faa70.
- Updated README for Xdebug + PhpStorm b1fe812.
- Fixed issues with onelinesetup script #564.
- Fixed Shellcheck failures for bin/setup-ssl-ca #558.
- Fixed php.ini possible wrong smtp-addr #556.
- Ensure files are created so Docker doesn't create them as root #562.
- Added additional time for Elasticsearch container to get initialized during setup.
- Fixed Selenium configuration for MFTF PR #554.
- Fixed PHP image
8.0-fpm-developfor Magento 2.4.4 support (note: still has-developtag).
- Moved
~/.sshvolume mount references todocker-compose.ymlto 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 beeen 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.
- Updated
onelinesetupscript to use version2.4.3-p1by default. - Updated
bin/cache-cleanwith improved logic PR #400. - Simplified
docker-compose.dev.ymlfile to only contain volume mounting information.
- Added new
mailcatcherimage to replacemailhogfor multi-arch support #511. - Added
docker-compose.dev-ssh.xmlto streamline SSH setup. - Added
docker-compose.dev-linux.xmlto streamline Linux setup. - Added GitHub workflows for multi-arch build support #396.
- Added multi-arch support for Nginx PR #515.
- Added multi-arch support for PHP PR #516.
- Added new
bin/setup-domainscript PR #429. - Added Basic MFTP Setup information PR #269.
- Make uid & gid of app user configurable #520.
- Added Makefile with list of available commands #399.
- Xdebug 3 support for
bin/n98-magerun2#545.
- Fixed SSL setup failing on Linux #222.
- Fixed locale code for
bin/setup-grunt#484. - Fixed cron not working #540.
- Replace MailHog with Mailcatcher for multi-arch compatibility #511.
- Fixed placement of enabling developer mode within bin/setup.
- Connection to Redis fails without php-redis extension #474.
- New Elasticsearch Docker images
7.9,7.9.3-0#488.
- Replace Percona DB with MariaDB 10.4 #514.
- Updated RabbitMQ image to 3.8.
- Resolve cron install script not in bin/setup #420.
- Update Elasticsearch settings to fix catalog search index error #488.
- Composer 2 support #409.
- Composer
auth.jsonnot properly set after installation #42. bin/removenot removing containers in newer versions of Docker Compose.- Invalid template error with Docker 3.5.1 #486.
- New
bin/setup-composer-authfile to setup Composer auth creds.
- Fix onelinesetup script bug.
- Official support for Xdebug 3 #390. The new PHP images are
7.3-fpm-12&7.4-fpm-5. - If you need to still use Xdebug 2, update your docker-compose.yml files to instead look at PHP image
7.3-fpm-11or7.4-fpm-4. These images are exactly the same other than being pegged to Xdebug 2.
- Reverted Xdebug to version 2 for backwards-compatible support #390.
- Reverted DB image back to
percona:5.7until issues with MySQL 8.0 image are resolved.
- New Elasticsearch Docker images
7.7,7.7.1-0#392. - SpellCheck GitHub Action for continuous integration checks of shell scripts #387, #388.
- Updated PHP images to NodeJS version 14 LTS 4a81f2b8.
- Changed
dbservice to use MySQL 8.0 Docker image.
- Automatically purge caches for a better dev experience #380.
- Stop script execution on error #363.
- Make xdebug command understand partials #371.
- Extended functionality for
bin/xdebug, including newstatusandtogglecommands #332. - Check Elasticsearch connection before setup:install #326.
- The onelinesetup now accepts a
communityorenterpriseparam to pick version to install b2399ff1. - Fix bin/start for macOS Big Sur #355.
- Updated Composer to version
1.10.15to avoid nag update messages in new PHP Docker images7.3-fpm-9,7.4-fpm-2.
- HTTP/2 added to Nginx image
1.18-4
bin/downloadfalls back to using Composer if archive download fails or is not found.
- New
bin/setup-integration-testsscript to setup integration tests 3c021ff. - Added
MYSQL_HOSTenvironment variable toenv/db.envfile. - New Nginx
1.18-3Docker images uses Alpine as base image PR #306.
- Prevent containers from starting if volume mapping doesn't exist, validate volumes to avoid empty folder creation PR #256.
- Setup script uses MySQL
env/db.envfile for database connection credentials PR #302. - Increased MySQL's
max_allowed_packetto64Mindocker-compose.ymlfile PR #303. docker-compose.ymlnow uses Alpine images for Redis and RabbitMQ #305.docker-compose.ymlfile now uses new Alpine images for Redis, RabbitMQ & Nginx.bin/setupscript updated to use Redis for cache and session directly in installer script PR #304.bin/setupscript sets Admin URL to/adminPR #304.- Enabling/disabling Xdebug now only restarts
phpfpmcontainer rather than all containers PR #314. bin/setupscript moves.vscodedirectory tosrcafter install 846d02c.
- Exception while running integration tests #292.
- Nested files not copying in copytocontainer script #295 #296.
- Ubuntu unable to start because of missing volumes #309.
- The
php:7.4-fpmDocker image has been setup with full support for Magento 2.4 (see images/php/7.4). - Added easy way to mount an SSH key to the container (see #89).
- The
bin/downloadscript now falls back to Hypernode's Magento Download mirror in the event the archive doesn't exist or fails to download from Nexcess.
- All Docker volumes now use
:cachedrather than:delegated. Thedelegatedvolume functionality is changing in a future version of Docker for Mac to use Mutagen volumes, and the implementation is very buggy & awkward. Using thecachedflag retains the current functionality we've been using indelegatedwithout any changes (confirmed in docker/for-mac#1592). - Updated
bin/setup-ssl-caso SSL generation works on Linux (#222) - Updated
phpDocker images to use most recent version of Composer (1.10.9). - The
bin/setupscript now runscomposer updaterather thancomposer install. There was an error happening withcomposer install, and with the start of the project it's best to just get the most recent Composer packages anyway. - The
bin/setupscript now sets Elasticsearch 7 as the default catalog search engine directly when executingbin/magento setup:install.
- All
latesttags have been removed on all Docker images. It is bad practice to not use a specific version. Thelatesttag will no longer be recompiled when new images are released. - The
php:7.2Docker images have been deprecated, as that version is no longer supported in Magento. - The
elasticsearch:6Docker images have been deprecated, as those versions are no longer supported in Magento. - Removed invalid checksum hack fix in
bin/setupforgoogle-shopping-apipackage, as that is only applicable to older versions of Magento.
- Backed out last Elasticsearch update with elasticsearch.yml, caused issues with startup.
- Updated
bin/dev-urn-catalog-generateto account for new versions of PHPStorm (simplified). - Indexing error with possible ElasticSearch modules (#262).
- Updated ElasticSearch 6 to version 6.8.
- Fixed typo in last build image, new version is
magento-nginx:1.18-2.
- Reverted old SSL cert, it needs to exist as default cert until new certs are generated.
- New
magento-nginx:1.18Docker image. - New
magento-elasticsearch:7.6Docker image. - Documentation to install Magento directly with sample data (using
with-samples-prefix (thanks Nexcess!).
- The
bin/setuphelper script to enable Elasticsearch 7 and automatically reindex during installation. - The
docker-compose.ymlfile now references themagento-nginx:1.18-0andmagento-elasticsearch:7.6.2-0Docker images. - The
docker-compose.ymladds the new environment variable"discovery.type=single-node"for compatibility with Elasticsearch 7. - The new
nginx:1.18Docker image setsfastcgi_buffer_size 64k;andfastcgi_buffers 8 128k;directives for Magento 2.3.5 compatibility.
- Old SSL cert being generated directly on Nginx image (deprecated).
- References to Nginx 1.13 images (deprecated).
- Reverted disabling Temando_Shipping module in bin/magento for sample data installation. #250
- The
Temando_Shippingmodule conflicts with sample data installation. Added fix tobin/magentohelper script to disable this module, install sample data, then re-enable it.
- Added a
--remove-orphansflag tobin/startscript to remove orphaned containers (applicable to cron service).
- Increased php.ini
memory_limitto4Gto get PHPUnit tests to pass - Increased php.ini
upload_max_filesizeandpost_max_sizeto100Mjust to prevent issues from being filed in the future
- New PHP image tags
7.2-fpm-9,7.3-fpm-6
- Added new CLI to connect to MySQL
- Updated readme with new bin/mysql documentation
- n98-magerun2 to install on exec of
bin/n98-magerun2instead ofbin/setupscript - Increased
max_input_varsto10000to prevent Invalid Form Post submission errors
- Fixed PHP ioncube module missing ioncube.so file
- Disable TTY on
bin/setup-ssl-ca script - Fixed
bin/copytocontainerscript not copying files to proper directory
- Fixed implementation of grunt. The grunt-cli is now installed globally on the image and doesn't depend on contents of the
vendordirectory.
- Upgraded NodeJS to 10.x, as 8.x was failing to install npm due to source repository updates #210
- Removed PHP 7.1 image from filesystem as it has been deprecated. If you need to reference the last version of these images, they are available at https://github.com/markshust/docker-magento/tree/27.2.0/images/php/7.1
- Support for RabbitMQ PR #212
- New
bin/setup-sslscript to generate valid SSL certificates #211 - New
markoshust/magento-nginx:1.13-8image containing mkcert script
- Updated
bin/setupto use newbin/setup-sslscript
Happy new year! 🎉
- Updated the PHP base images from Debian Stretch to Buster
- Updated PHP libsodium package to
1.0.17to supportHASH_VERSION_ARGON2ID13#193
- Built-in support for Blackfire.io
- New PHP image tags
7.2-fpm-5,7.3-fpm-2
- Ability for
srcdirectory to be a symlink
- Fixed Magento2 setup script with n98-magerun2.phar
- Fixed dev-urn-catalog-generate script
- All Windows-specific setup and helper scripts. This involved changing directory structure of
composefolder, there is no longer specificmagento-2andmagento-2-windowsspecific folders. Windows support works on Docker with WSL. - Support for PHP 7.1 (EOL)
- Full parity with Magento Cloud PHP extensions
- Optimized Dockerfile install order and layer usage for all PHP images (7.1, 7.2 & 7.3)
- Updated few lib dependencies in Dockerfiles with new versions
- Pegged Composer to version 1.9.0 for predictability, moved to lower layer so updating version doesn't require full rebuild of all layers
- Fixed logic of
bin/copyfromcontainerandbin/copytocontainerso subdirectories are now properly copied from and to the container
- The
bin/fixownsscript now includes the ability to fix ownerships at the subdirectory level - The
bin/copyfromcontainerandbin/copytocontainerscripts now fixes permissions and ownerships of just the subdirectories that are copied
- Fixed
bin/copyfromcontainerandbin/copytocontainerreferencing incorrect destination file locations
- Added missing
bin/pwa-studioandbin/setup-pwa-studiobash scripts
- Documented in README how to retrieve
bin/updatefile for previous versions that did not include it - Added
hirak/prestissimocomposer package tobin/setuphelper script for much faster composer installs - Downloaded archive installs are now cached on the user's machine, so subsequent installs of Magento will no longer re-download the archive if previously downloaded. Downloaded archives are stored in the
~/.docker-magentofolder.
- There is an invalid checksum reference in the Nexcess archive of 2.3.3, replaced checksum reference in
bin/setupto resolve the error
- The previous CHANGELOG for
24.0.0referencedvertex/module-taxbeing removed but for some reason it was not removed, now it is
- New PHP docker image version
7.3-fpm-0for Magento 2.3.3 support - New Elasticsearch docker image
markoshust/magento-elasticsearch:6.5.4-0which comes bundled with icu and phonetic plugins. The initial6.5version is for parity with Magento Cloud. - New
bin/updatehelper script that updates your docker-magento setup to the latest version - Added
.gitignorefile to project root to ignoresrcdirectory. 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. - Install n98-magerun2 when setup is executed, and added related
bin/n98-magerunandbin/devconsolehelper scripts. - Added
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) - Added
bin/pwa-studio(BETA) helper script to easily run the PWA Studio NodeJS web server
- The
bin/dev-urn-catalog-generatehelper script has been updated for compatibility with more recent versions of PHPStorm
-
The
vertex/module-taxComposer package installs correctly as of 2.3.0, so the line within thebin/setupscript 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 yourcomposer.jsonfile to prevent this package from being installed:{"replace": { "vertex/module-tax": "*" }}
- The
phpbase Docker image changed from Debian Stretch to Buster and broke a lot of packages, which caused a failed build for7.1-fpm-12&7.2-fpm-3tags. This update pegs thephpDocker image to Debian Stretch.
- Xdebug breakpoints not triggering
- New PHP docker image versions
7.1-fpm-12,7.2-fpm-3
- Mailhog container doesn't stop when running bin/stop
- View emails sent locally through Mailhog by visiting http://{yourdomain}:8025
- Make Dockerfile consistent between versions
- Move Docker layers to bottom for smaller downloads, useful for those using previous versions
- Same Docker version tag, so just remove Docker image locally and re-pull to use
libsodium-devpackage andsodiumPHP extension for Magento 2.3.2 support.- New PHP docker versions
7.1-fpm-10,7.2-fpm-1
- Allow setup without SSH credentials.
- Documentation for connecting to MySQL.
bin/statusto check container status.
- Readme for existing installs.
bin/dev-urn-catalog-generateto look atsrcfolder as project root.
- Readme usage of pasting command into non-standard terminal.
- Host bind mount
var/logfolder indocker-compose.dev.ymlfor debugging purposes. - Redis is now the default storage engine for cache and session. Massively improved performance for local dev! 🚀
- Added commented-out line in
docker-compose.dev.ymlfile to easily mountauth.jsonfile, with updated usage in README
- Cron not working correctly
- Helper script
bin/fixownsnow fixes permissions on/var/wwwinstead of/var/www/htmlfolder. - Removed superfluous mounting of
~/.composerdirectory indocker-compose.dev.ymlfile.
- Helper script
bin/copytocontainernow callsbin/fixownsafterwards to ensure correct file ownerships are set.
- Helper script
bin/removevolumesto remove docker volumes easily. - Added removal of
vendorfolder and force of composer install tobin/setupscript. 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. - Force deploy of static content when running
bin/setupto speed up initial requests.
- Fixed helper script
bin/dev-urn-catalog-generateto copy file to host.
🎅 Santa Shust wishes you a very Merry Christmas!
- 💯 performance improvements (14 second load times now take 7 seconds!)
- The
bin/starthelper script no longer copies docker volumes introduced in version 18.0.0. Thedocker-compose.ymlsetup has been updated to only reference native Docker volumes. A newdocker-compose.dev.ymlfile has been added to reference development-specific settings, including host bind mounts. Only.composer,app/code,app/design,app/etc,composer.json,composer.lock, andnginx.conffilesystem 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 mountinggeneratedandvarfolders as host bind mounts. These directories are considered "caching" folders and should never be host bind mounted. - If you need access to specific files that are created within the container and are not host bind mounted, you can use
bin/cliorbin/bashcommands to go into the container to access the files. You can also use the newbin/copyfromcontainerandbin/copytocontainerbin helper scripts to copy files & folders from or to containers. - If you need to host bind mount files or folders, feel free to do so within the
docker-compose.dev.ymlfile! Just be aware there is a performance penalty for doing so.
- The
- Updated
nginxDocker image to look fornginx.conffile instead ofnginx.conf.samplefile. This will now require copying thenginx.conf.samplefile tonginx.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 asmarkoshust/magento-nginx:1.13-7. - The
bin/setuphelper script uses ohly thedocker-compose.ymlfile, with only native docker volume mounts. - The
bin/starthelper script uses bothdocker-compose.ymlanddocker-compose.dev.ymlfiles. Development-only specifications should now be placed withindocker-compose.dev.yml, such as host bind volume mounts. - The
docker-compose.ymlfile now uses asockdatavolume mount to mount the/sockdirectory. You may need to delete theappdatavolume mount (docker volume rm NAME) and rebuild it withbin/copytocontainer --all. - Removed call to
bin/fixpermswithinbin/setupto speed up initial installation.
- Added
bin/copyfromcontainerandbin/copytocontainerhelper scripts to copy folders or files from or to containers. Specify the--alloption to copy entire web directory structure. - Added
bin/rootnottyto run root commands with no TTY (needed for unassisted one-line setup with new volume setup). - Added
bin/fixownsto fix filesystem ownerships within the Docker container. - Added
docker-compose.dev.ymlfile for development-only specifications.
- The Magento 1 version of this development environment has been deprecated and is no longer supported. PHP 5 was used as it's base, and that version has reached end-of-life. If you still wish to use this setup, please reference compose/magento-1 on tag 20.1.1, but please be aware these images are no longer maintained.
- The PHP 5.6 and 7.0 images have been deprecated, as both of these versions have reached end-of-life. These versions have been removed from the README and are no longer maintained. If you still wish to use these images, please reference the README on tag 20.1.1, but please be aware these images are no longer maintained.
- Removed
bin/copydirandbin/copydirallhelper scripts.
- Fixed typo in docker-compose.yml for linux
- Official support for Elasticsearch. Go to Admin > Stores > Configuration > Catalog > Catalog > Catalog Search, and select "Elasticsarch 5.0+" from the list of options. Keep all defaults the same, but set Elasticsearch Server Hostname to
elasticsearch. Save, clear the cache, and runbin/magento indexer:reindexto enable.
- Official support for Magento 2.3 & PHP 7.2. Officially tagging
7.2-fpm-0php image.
- Various updates to README, including references now being made to Magento 2.3.
- Added comments to docker-compose for fixes needed on Linux machines (volume mounts and host.docker.internal fix).
- Volume mount issues on linux. Updated
bin/startto ignore call tobin/copydirallwhen ran on Linux.
- Added SSL support and made it enabled by default in the nginx config. All http requests will also be forwarded to https.
- Magento 2 nginx configuration now includes
nginx.conf.samplefile from root installation directory for configuration, instead of having standalone configuration.
- Reverted old
bin/cliusage and createdbin/clinottyfor non-tty sessions. Updated calls inbin/setupand other scripts where appropriate tobin/clinotty.
- Changed the way bind mounts work with Docker compose and Magento 2.
- Note that
bin/startnow includes a call tobin/copydirallafter the containers start. This helper script runs adocker cpcommand of all Magento directories from the container to the host. There is still a bind mount setup to./srcroot directory. - There is a condition/bug within Docker that when named volumes overlap with bind mounts, the named volumes automatically sync back to the host once a
docker cpcommand runs, while retaining their named volume status within the Docker container. - We're tapping into this very odd bug and taking advantage of this as long as we can. Since data is still fetched from within the Docker container as a named volume, this should also allow not-so-performant computers to now run this Docker setup, as it provides near or truly native filesystem performance, since requests to these directories are still fetched through the named volume as far as Docker is concerned.
- Note that
bin/startnow runs in daemon mode, as we also need to runbin/copydirallimmediately 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.
- Added back support for Magento 1 and PHP 5.6 containers. Magento 1 EOL will not be until 2020, so we should support these images and Docker Compose setup indefinitely for the time being.
- Added new
bin/restarthelper script to stop and start all containers. - Added new
bin/removehelper script to remove all containers. - Added new
bin/copydirwhich copies whichever folder you wish from the container to the host. - Added new
bin/copydirallwhich copies all Magento folders from the container to the host. - Added
lib/templateandlib/onelinesetupfor much easier installation methods. - Added automatic Xdebug support for VS Code - no setup needed!
- Removed
bin/initloopbackalong with any references to10.254.254.254ip address. This may break existing Xdebug setups. Note that this ip address has been replaced withhost.docker.internal, which should automatically resolve back to the host machine.
- Removed bind mount of vendor folder introduced in 16.2.0 due to inconsistency issues. Update cominmg soon that will implement new method of bind mounting.
- Removed idekey setting from php.ini config.
- Simplified Xdebug configuration for PHPStorm. This will require configuration updates for all users using Xdebug within PHPStorm.
- Added support for Xdebug and VS Code.
- Updated docker-compose.yml file to volume mount vendor folder for 50% performance increase
- Added php ssh2 extension
- The PHP 5.6 release will no longer be maintained, the last released version is 16.0.0
- Moved
dev/auth.jsontodev/composer/auth.json - Added
client_max_body_size 20Mto nginx.conf - Added
upload_max_filesize = 20Mandpost_max_size = 20Mto php.ini
- Bugs with npm permissions.
- NodeJS 8 and npm 5 added to the PHP images!
- New PHP 7.2 image. Be aware that this hasn't yet been fully tested.
- New helper scripts bin/grunt, bin/node, bin/npm and bin/stop.
- All bin helper script calls from ./bin/name to bin/name.
- Updated bin scripts for Windows, possible breaking updates.
- Magento 2.2.5 requires username and password to be different values. Updated to dummy "John Smith" user persona with username
john.smithand passwordpassword123.
- New
dev/auth.jsonfile used instead of~/.composer/auth.jsonfile, so each project can have different auth credentials.
- The
cronservice 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).