Home

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


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>
  1. Install Docker on Mac

  2. Configure File Sharing settings for the folder that contains your projects

    File Sharing Configuration

  3. Optionally you can also apply these performance tweaks

</details> <details> <summary>Linux</summary>
  1. Install docker

  2. Configure permissions

</details>

Install dockergento console

  1. Clone this repo

    git clone https://github.com/ModestCoders/magento2-dockergento.git
    
  2. Add dockergento bin into your $PATH

    sudo ln -s $(pwd)/magento2-dockergento/bin/dockergento /usr/local/bin/
    
  3. Open a new terminal tab/window and check that dockergento works

    which dockergento
    dockergento
    
</details>

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)

<details> <summary>Workaround to improve performance on Mac</summary>
  1. 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
    
  2. Sync app using unison container. Add this in docker-compose.dev.mac.yml

    unison:
      volumes:
        - ./app:/sync/app
    
  3. Mirror not synced folders before executing composer the first time

    dockergento start
    dockergento mirror-host app dev generated pub var
    
  4. 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>
    
</details>
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

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! 🍺

Donate

Resources

This project has been possible thanks to the following resources:

Licence

Copyright

(c) ModestCoders