Awesome
Magento 2 Dockergento
Plug and play Magento 2 dev environments with docker. Fastest performance ever on Mac and Linux.
Performance Comparison
Up to 7x faster development experience on Mac compare to standard docker setups.
<a href="https://www.youtube.com/watch?v=qdUBuDCzHaA&list=PLBt8dizedSZBhcjTL8SM2PS2HEy0mFf5F" target="_blank"> <img src="docs/img/benchmark_comparison_video.png" alt="Dockergento speed comparison" width="320" height="180" border="5" /> </a>Check out all benchmarks
Learn more about how that is achieved
What is dockergento?
Dockergento is just a bash script ready to use in Linux and Mac to be able to use docker with best native performance.
While performance might no be a problem for Linux, using this tool is the only way you can overcome performance issues on Mac. Dockergento allows you to have different configuration for each system while using the same workflow. So your whole team can work the same way no matter which computer they are using. It just works!
Supported Systems
- Mac
- Linux
Video Tutorials
If you do not like reading and prefer watching videos. Check out all video tutorials here:
Installation
You only need 3 things on your local machine: git
, docker
and dockergento
Install Docker
Follow the installation steps for your system.
<details> <summary>Mac</summary>-
Install Docker on Mac
-
Configure
File Sharing
settings for the folder that contains your projects -
Optionally you can also apply these performance tweaks
-
Install docker
-
Configure permissions
Install dockergento console
-
Clone this repo
git clone https://github.com/ModestCoders/magento2-dockergento.git
-
Add
dockergento
bin into your$PATH
sudo ln -s $(pwd)/magento2-dockergento/bin/dockergento /usr/local/bin/
-
Open a new terminal tab/window and check that
dockergento
workswhich dockergento dockergento
Project Setup
Depending the type of project, you can use one of the following setups:
Dockerize existing project
cd <your_project>
dockergento setup
New project
mkdir <new_project_name> && cd <new_project_name>
dockergento setup
dockergento create-project
Magento 2 github for contribution
Disclaimer: Performance on Mac is slower here due to the huge amount of files in app
(~20.000 files)
-
Remove these lines on
docker-compose.dev.mac.yml
- ./app:/var/www/html/app:delegated - ./dev:/var/www/html/dev:delegated - ./generated:/var/www/html/generated:delegated - ./pub:/var/www/html/pub:delegated - ./var:/var/www/html/var:delegated
-
Sync
app
usingunison
container. Add this indocker-compose.dev.mac.yml
unison: volumes: - ./app:/sync/app
-
Mirror not synced folders before executing composer the first time
dockergento start dockergento mirror-host app dev generated pub var
-
If you are editing code in
app
, you need to start unison watcher to sync files between host and container.dockergento watch app/code/Magento/<module_name>
git clone https://github.com/magento/magento2.git
cd magento2
dockergento setup
Usage
Start Application
dockergento start
dockergento composer install
sudo vim /etc/hosts
// Add -> 127.0.0.1 <your-domain>
Open http://<your-domain>
in the browser 🎉
Workflow
See detailed documentation about development workflow with dockergento
More Documentation
- Multi store configuration
- PHPStorm + Xdebug Setup
- Grumphp setup
- Docker images list
- Other customizations
Troubleshooting
ChangeLog
Developers
Donations 🙏
We’ve worked very hard to implement this tool. If you find it useful and want to invite us for a beer, just click on the donation button. Thanks! 🍺
Resources
This project has been possible thanks to the following resources:
- docker-magento by @markshust
- Getting Started with Docker for Magento by @mostlymagic
- Docker Background Sync by @cweagans
Licence
Copyright
(c) ModestCoders