Docker development environment
Magento Commerce Cloud provides a Docker environment option for those who use their local environment for development, test, or automation tasks. The Magento Commerce Cloud Docker environment requires three, essential components: a Magento Commerce v2 template, Docker Compose, and Magento Commerce Cloud
The Magento Cloud Docker repository contains build information for the following Docker images:
Database based on MariaDB version 10
PHP-CLI: version 7 and later
PHP-FPM: version 7 and later
Web server based on NGINX version 1.9
Based on version 3.2 and later
Based on the latest Varnish version and used for caching
Based on version 3.5 and later
Based on version 1.7 and later
The web container works with the PHP-FPM to serve PHP code, the DB image for the local database, and the Varnish image to send requests and cache the results.
There are few CLI containers based on a PHP-CLI image that provides
ece-tools commands to perform file system operations.
build—extends the CLI container to perform operations with writable filesystem, similar to the build phase
deploy—extends the CLI container to use read-only file system, similar to the deploy phase
cron—extends the CLI container to run cron
cron:updatecommands are not available on Cloud and Docker for Cloud environment
- Cron only works with CLI container to run
As an example, to run the
ece-tools ideal-state command:
docker-compose run deploy ece-command wizard:ideal-state ... - Your application does not have the "post_deploy" hook enabled. The configured state is not ideal
The Cron container is based on PHP-CLI images, and executes operations in the background immediately after the Docker environment start.
View cron log
docker-compose run deploy bash -c "cat /var/www/magento/var/log/magento.cron.log"
The database container is based on the
Importing a database dump
To import a database dump, place the SQL file into the
docker/mysql/docker-entrypoint-initdb.d folder. The
ece-tools package imports and processes the SQL file the next time you build and start the Docker environment using the
docker-compose up command.
Although it is a more complex approach, you can use GZIP by sharing the
.sql.gz file using the
docker/mnt directory and importing it inside the Docker container.
Sharing data between host machine and container
You can share files easily between your machine and a Docker container by placing the files in the
docker/mnt directory. You can find the files in the
/mnt directory the next time you build and start the Docker environment using the
docker-compose up command.
You can send emails from your Docker environment when you enable
sendmail in the
docker/global.php configuration file:
After you update a configuration file, you must convert the file to a Docker ENV file to include your updates the next time you launch your Docker environment: