Developer mode

Developer mode supports an active development environment with full, writable file system permissions. This option builds the Docker environment in developer mode and verifies configured service versions.

Performance considerations

On macOS and Windows systems, performance is slower in developer mode because of additional file synchronization operations. However, you can improve performance by using either the manual-native or the mutagen file synchronization option when you generate the docker-compose.yml file. See Synchronizing data in Docker.

The ece-tools version 2002.0.18 and later supports developer mode.

Large files (>1 GB) can cause a period of inactivity. DB dumps and archive files—ZIP, SQL, GZ, and BZ2—are not necessary to sync. You can find exclusions to these file types in the mutagen.sh file.

Launch Docker in developer mode

See Configure Docker for details about customizing the Docker configuration.

Prerequisites:

To launch the Docker environment in developer mode:

  1. In your local environment, generate the Docker Compose configuration file. You can use the service configuration options, such as --php, to specify a version.

    1
    
    ./vendor/bin/ece-docker build:compose --mode="developer"
    

    If required, set the option for synchronizing data in Docker. For example:

    1
    
    ./vendor/bin/ece-docker build:compose --mode="developer" --sync-engine="mutagen"
    

    You can further customize the Docker Compose configuration file by adding additional options to the build:compose command. For example, you can set the software version for a service, or add Xdebug configuration. See service configuration options.

  2. Optional: If you have a custom PHP configuration file, copy the default configuration DIST file to your custom configuration file and make any necessary changes.

    1
    
    cp .docker/config.php.dist .docker/config.php
    
  3. If you selected the manual-native option, start the file synchronization using the following commands.

    This command copies all data from the local machine to the Docker volume:

    1
    
    ./bin/magento-docker copy-to --all
    

    Additionally, you can provide a specific directory from the local machine to copy to the Docker volume, for example vendor:

    1
    
    ./bin/magento-docker copy-to vendor
    

    To copy all data from the Docker volume to the local machine, use:

    1
    
    ./bin/magento-docker copy-from --all
    

    Additionally, you can provide a specific directory from the Docker volume to copy from, such as vendor:

    1
    
    ./bin/magento-docker copy-from vendor
    
  4. Build files to containers and run in the background.

    1
    
    docker-compose up -d
    
  5. If you selected mutagen for file synchronization, start the file synchronization.

    1
    
    bash ./mutagen.sh
    

    If you host your Docker environment on Windows and the session start fails, update the mutagen.sh file to change the value for the --symlink-mode option to portable.

  6. Install Magento in your Docker environment.

    • For Magento version 2.4 and 2.4.1 only, run the following command to apply patches before you deploy.

      1
      
      docker-compose run --rm deploy php ./vendor/bin/ece-patches apply
      
    • Deploy Magento in the Docker container.

      1
      
      docker-compose run --rm deploy cloud-deploy
      
      1
      
      docker-compose run --rm deploy magento-command deploy:mode:set developer
      
    • Run post-deploy hooks.

      1
      
       docker-compose run --rm deploy cloud-post-deploy
      

      Developer mode does not require the build operation.

  7. Configure and connect Varnish.

    1
    
    docker-compose run --rm deploy magento-command config:set system/full_page_cache/caching_application 2 --lock-env
    
    1
    
    docker-compose run --rm deploy magento-command setup:config:set --http-cache-hosts=varnish
    
  8. Clear the cache.

    1
    
    docker-compose run --rm deploy magento-command cache:clean
    
  9. Access the local Magento Cloud template by opening one of the following URLs in a browser:

    • http://magento2.docker

    • https://magento2.docker

  10. Use the default credentials to log in to the Admin (https://magento2.docker/admin).

    • username = Admin
    • password = 123123q
  11. Access the default email service: http://magento2.docker:8025

If you see the Your connection is not private error message while using an HTTPS connection, click Advanced, then click the Proceed to magento2.docker (unsafe) link. If you use Google Chrome and there is no Advanced button, then type thisisunsafe to bypass the security warnings. For CURL requests, add the -k or --insecure option to ignore certificate warnings.