Magento Cloud Docker release notes
The magento/magento-cloud-docker
package provides functionality and Docker images to deploy Magento Commerce to a local Cloud environment. These release notes describe the latest improvements to this package, which is a component of Magento Commerce Cloud Suite.
The magento/magento-cloud-docker
package uses the following version sequence: <major>.<minor>.<patch>
.
The release notes include:
- New features
- Fixes and improvements
v1.2.1
Release date: December 21, 2020
-
NGINX command options–Added build command options to change the number of NGINX
worker_processes
and NGINXworker_connections
for TLS and Web services. Theworker_process
parameter retains the ability to set the value toauto
. Examples:1 2
./vendor/bin/ece-docker build:compose --nginx-worker-processes=2 ./vendor/bin/ece-docker build:compose --nginx-worker-connections=2048
-
TLS command option–Added build command option to create a configuration without the TLS service. Example:
1
./vendor/bin/ece-docker build:compose --no-tls
-
NGINX memory consumption–Reduced the memory consumed by the NGINX process for TLS and Web services.
-
Blackfire–Disabled Blackfire PHP extension by default in the Cloud Docker image.
-
PHP-FPM container–Fixed PHP-FPM container health check by changing the
WEB_PORT
from80
to8080
. -
Invalid volume naming–Fixed an error with invalid volume naming in developer mode.
-
NGINX upstream port—Updated the Docker NGINX 1.19 image to use port 8080 to avoid an infinite loop. Fix submitted by Adarsh Manickam.
v1.2.0
Release date: November 9, 2020
-
Container updates–
-
PHP-FPM container–Added support for the gnupg PHP extension. Fix submitted by G Arvind from Zilker Technology.
-
Database container–Fixed the database container health check by adding the required database password to the health check command.
-
Elasticsearch container
-
Added support for Elasticsearch 7.9 for compatibility with upcoming Magento releases.
-
Elasticsearch plugin configuration–Added support to use the Elasticsearch plugin configuration information from the
services.yaml
file to generate thedocker-compose.yaml
file for a Magento Cloud Docker environment. See Elasticsearch plugins. -
Elasticsearch plugin support–Added support for the following Elasticsearch plugins:
analysis-icu
,analysis-phonetic
,analysis-stempel
, andanalysis-nori
. Theanalysis-icu
andanalysis-phonetic
plugins are installed by default. You can add or remove theanalysis-stempel
andanalysis-nori
plugins as needed.
-
-
CLI container
-
Run commands inside Docker PHP containers–Now you can use the Magento Cloud Docker CLI to run commands inside PHP containers in your Docker environment without having to install PHP on the host. For example, the following command builds the configuration:
./bin/magento-docker php 7.3 vendor/bin/ece-docker build:compose
. See Magento Cloud Docker CLI. Fix submitted by G Arvind from Zilker Technology. -
Added the OpenSSH-client to PHP CLI containers. Now, you can use ssh-agent forwarding for Composer if the
composer.json
file contains private git repositories that require an ssh client to use Composer commands.
-
-
TLS container–Now, the TLS container is based on the
https://hub.docker.com/r/magento/magento-cloud-docker-nginx
Docker image instead of the Centos image. This change fixes issues that caused errors when sending HTTPS requests between containers in the Cloud Docker environment. -
Test container–Added a test container for Magento application testing, and added the
--with-test
option to the Dockerbuild:compose
command to create the container only when testing Magento in the Docker environment. See Magento application testing. -
FPM-XDEBUG container
-
Configure Xdebug on Linux–Added the
--set-docker-host
option to theece-docker build:compose
command to configure thehost.docker.internal
value in the Xdebug container. This option is required to use Xdebug on Linux systems. See Configure Xdebug for Docker. -
Fixed the Xdebug variable configuration for the Docker ENTRYPOINT to resolve
uninitialized "with_xdebug" variable
errors in the logs. Fix submitted by Florent Olivaud
-
-
-
Docker configuration changes
-
MailHog configuration–Now you can use the following
ece-docker build:compose
command options to disable MailHog and specify ports:--no-mailhog
,--mailhog-http-port
, and--mailhog-smtp-port
. See Set up email. -
For Magento Cloud Docker 1.2.0 and later, Magento now provides Docker images for each patch version, and the Docker configuration generator creates the Docker configuration with a specified patch version instead of using the latest. Previously, the Docker configuration generator built the configuration using the latest patch version which could break Magento Cloud Docker environments built using an earlier version.
-
Specify custom images and versions in custom Magento Cloud Docker configuration—Updated the
build:custom:compose
command with options to specify custom images and versions when generating a custom Docker compose configuration file (docker-compose.yaml
). See Build a custom Docker Compose configuration. -
Updated the Docker host configuration to expose port 443 to enable access to Magento (
https://magento2.docker
) from all CLI containers. You can change the default port by adding the--tls-port
option when you generate the Docker configuration file.
-
-
Fixed an issue that caused the Magento Cloud Docker build to fail if the
app/etc/env.php
file exists. -
Updated the build configuration to replace named volumes with regular volumes to prevent issues when deploying Magento Cloud Docker on Linux or Windows Subsystem for Linux (WSL2).
-
Updated the Magento Cloud Docker functional tests to support Composer 2.0.
v1.1.2
Release date: September 9, 2020
- Added support for Elasticsearch 7.7
v1.1.1
Release date: August 5, 2020
-
Updated email configuration–Updated the default configuration to support the MailHog service instead of using SendMail. See Set up email.
-
Restored the PS library to the Cloud Docker environment configuration to fix
ps: command not found
errors. -
Updated the default Magento Cloud Docker configuration to remove automatic mounting of the database entrypoint and MariaDB volumes to fix
Cannot create container for service db
errors that can occur when starting your Cloud Docker environment.Now, you can configure the Cloud Docker environment to mount the database directories by adding the following options to the
ece-docker build:compose
command:--with-entry-point
andwith-mariadb-conf
. See Service configuration options. -
CLI command updates
Action | Command |
---|---|
Add an entrypoint to the database container to restore the database from backup | ./vendor/bin/ece-docker build:compose --db --with-entrypoint |
Add a MariaDB configuration volume | ./vendor/bin/ece-docker build:compose --db --mariadb-conf |
v1.1.0
Release date: June 25, 2020
-
Added support for the Magento split database performance solution–Now you can configure and deploy a Magento store using the Magento Split database performance solution in the Cloud Docker environment. See Enable split database solution.
-
Support for Magento Commerce and Magento Open Source deployment–Now you can use Magento Cloud Docker to deploy a local development environment for projects that are not hosted on the Magento Cloud platform.
-
Blackfire.io support–Added support to use the Blackfire.io extension for automated performance testing. Fix submitted by Adarsh Manickam from Zilker Technology
-
Container updates
-
Varnish—Now Varnish is the default cache when you deploy Magento in a Cloud Docker environment using a supported version of the Magento Cloud application template. See Varnish container.
-
Added the
--no-varnish
option to skip Varnish service installation when you generate the Cloud Docker configuration file. -
Database
-
Added the support for the MySQL database. Now, you can configure the Cloud Docker environment with either MariaDB or MySQL. See Service configuration options.
-
Added the ability to set the increment and offset settings for database replication when you generate the Docker compose file. See Service containers.
-
-
PHP-FPM
-
Added support for PHP 7.4. Fix submitted by Mohanela Murugan from Zilker Technology
-
Added ability to copy a
php.ini
file in the Magento root project directory to the Cloud Docker environment and apply custom PHP settings to the PHP-FPM and CLI containers. See Customize PHP settings. Fix submitted by Mathew Beane from Zilker Technology. -
Added a container health check. Fix submitted by Visanth Sampath from Zilker Technology.
-
-
Node.js—Updated the default Node.js version from version 8 to version 10 to improve security. Node.js version 8 is deprecated and no longer updated with bug fixes or security patches. Fix submitted by Mohan Elamurugan from Zilker Technology.
-
Elasticsearch
-
Added support for Elasticsearch 6.8, 7.2, 7.5, and 7.6.
-
Added the ability to customize the Elasticsearch container configuration when you generate the Docker compose configuration file.
-
Added the
--no-es
option to the service configuration options for generating the Docker Compose configuration file. Use this option to skip the Elasticsearch container installation and and use MySQL search instead. This option is supported only for Magento versions 2.3.5 and earlier.
-
-
FPM-XDEBUG container—Added a service configuration option to install and configure Xdebug for debugging PHP in your Cloud Docker environment. See Configure Xdebug.
-
-
Docker configuration changes
-
Added health checks for the PHP-FPM, Redis, Elasticsearch, and MySQL Docker service containers.
-
Changed the default file synchronization mode to
native
in Developer mode. -
Added version information to the generic Docker service container image when generating the
docker-compose.yml
file. -
Improved ability to handle large responses from the upstream PHP-FPM container by increasing the
fastcgi_buffers
value for the Nginx server. -
Improved mutagen file synchronization performance by adding a second sync session to synchronize files in the
vendor
directory. This change prevents mutagen from getting stuck during the file synchronization process. Fix submitted by Mathew Beane from Zilker Technology. -
CLI command updates
Action Command Clear Redis cache bin/magento-docker flush-redis
Clear Varnish cache bin/magento-docker flush-varnish
Skip default Varnish installation .vendor/bin/ece-docker build:compose --no-varnish
Customize Elasticsearch options .vendor/bin/ece-docker build:compose --es-env-var
Remove Elasticsearch configuration .vendor/bin/ece-docker build:compose --no-es
Configure DB container with MySQL version 5.6 or 5.7 ./vendor/bin/ece-docker build:compose --db <mysql-version-number> --db-image mysql
Specify custom Magento base URL ./vendor/bin/ece-docker build:compose --host=<hostname> --port=<port-number>
Add container for Xdebug configuration .vendor/bin/ece-docker build:compose --mode developer --sync-engine native --with-xdebug
-
-
Fixed the configuration of mutagen file synchronization to prevent mutagen from creating stale sessions. Fix submitted by Mathew Beane from Zilker Technology.
-
Fixed a configuration issue that caused syntax errors in the Docker compose log when starting the PHP-FPM container. Fix submitted by Mathew Beane from Zilker Technology
-
Fixed volume conflict errors that sometimes occurred when using multiple Docker environments. Fix submitted by G Arvind from Zilker Technology.
-
Fixed an issue that caused the
ece-docker build:compose
command to fail if the configuration included Blackfire.io. Fix submitted by G Arvind from Zilker Technology. -
Updated the PHP CLI image configuration to prevent out-of-memory errors that occurred when installing multiple packages using Magento Cloud Docker. Fix submitted by Mohan Elamurugan from Zilker Technology.
-
Added support for multiple MySQL users in the Cloud Docker environment. In earlier releases, the
build:compose
operation failed if themagento.app.yaml
file specified multiple database users. Fix submitted by G Arvind from Zilker Technology. -
Removed
rsyslog
from the Magento Cloud Docker PHP containers to resolve compatibility issues that caused warning notifications during deployment. Magento Cloud Docker does not use the rsyslog utility.
v1.0.0
Release date: Feb 5, 2020
-
Created a separate package to deliver
Magento Cloud Docker
–Moved the source code to deliver Magento Cloud Docker from theece-tools
repository to the newmagento-cloud-docker
repository to maintain code quality and provide independent releases. The new package is a dependency for ece-tools v2002.1.0 and later.When you update ece-tools, you also update the
magento/magento-cloud-docker
package to version 1.0.0. If you used Magento Cloud Docker with an earlierece-tools
release (2002.0.x), review the backward incompatibilities and update your project as scripts, commands, and processes as needed. -
Added versioning to the Docker images–You must now update the
magento/magento-cloud-docker
package to get the updated images. -
Container updates–
-
PHP-FPM container–
-
Added Node.js support–Updated the PHP-FPM image to support node, npm, and the grunt-cli capabilities inside the PHP container.
-
Added support for ionCube–Updated the default Docker configuration to support ionCube in the local Docker development environment.
-
-
Web container–
-
Customize NGINX configuration–Added the capability to mount a custom
nginx.conf
file to the Magento Cloud Docker environment. See Web container. -
Auto-generated NGINX certificates–The Docker configuration file now includes the configuration to auto-generate NGINX certificates for the Web container.
-
-
New Selenium container–Added a Selenium container to support Magento Commerce application testing using the Magento Functional Testing Framework (MFTF).
-
RabbitMQ version support–Updated the RabbitMQ container configuration to support RabbitMQ version 3.8.
-
Persistent database container–The
magento-db: /var/lib/mysql
database volume now persists after you stop and remove the Docker configuration and restores when you restart the Docker configuration. Now, you must manually delete the database volume. See Database containers. -
TLS container–
-
Updated the container base image to use official image–The Magento Cloud TLS container image is now based on the official
debian:jessie
Docker image.– -
Added support for the Pound TLS Termination Proxy–The Pound configuration file adds the following ENV variables to customize the Docker configuration for the TLS container:
-
TimeOut
–Sets the Time to First Byte (TTFB) timeout value. The default value is 300 seconds. -
RewriteLocation
–Determines whether the Pound proxy rewrites the location to the request URL by default. Defaults to0
to prevent the rewrite from breaking redirects to outside websites like an external SSO site. Fix submitted by Sorin Sugar
-
-
Increased the timeout value in the TLS container configuration from 15 to 300 seconds. Fix submitted by Mathew Beane from Zilker Technology
-
-
Varnish container–
-
Updated the container base image to use official image—The Magento Cloud Varnish container is now based on the official
centos
Docker image. -
Improved default timeout configuration-Added
.first_byte_timeout
and.between_bytes_timeout
configuration to the Varnish container. Both timeout values default to300s
(5 minutes). Fix submitted by Mathew Beane from Zilker Technology -
Skip Varnish during Xdebug sessions–Updated the Varnish container configuration to return
pass
on requests received when Xdebug is enabled. In previous releases, you could not use Xdebug if the Docker environment included Varnish. Fix submitted by Mathew Beane from Zilker Technology.
-
-
-
Docker configuration changes–
-
Manage mounts and volumes for your project–Added the ability to manage mounts and volumes when launching a Docker environment for local development. See Sharing Magento Cloud project data.
-
Support for network bridge mode–Added support for network bridge mode to enable connections between Docker containers over the local network.
-
Cron container disabled by default–To improve performance, the Cron container is no longer configured by default when you build the Docker environment. You can use the
--with-cron
option on the Docker build command to add a Cron container to your environment. See Managing cron jobs. -
Stop synchronizing large backup files–Added DB dumps and archive files—ZIP, SQL, GZ, and BZ2—to the exclusion list in the
dist/docker-sync.yml
anddist/mutagen.sh
files. Synchronizing large files (>1 GB) can cause a period of inactivity and backup files do not normally require synchronization since you can regenerate them.
-
-
Command changes–
-
Renamed the
./bin/docker
file to./bin/magento-docker
to fix an issue that caused some Docker environments to break because the./bin/docker
file overwrites existing Docker binary files. This is a backward incompatible change that requires updates to your scripts and commands. -
Added a service configuration option to expose the database port to the host–Use the
--expose-db-port=<PORT>
option to expose the database port to the host when building thedocker-compose.yml
file:bin/ece-docker build:compose --expose-db-port=<PORT>
Fix submitted by Adarsh Manickam from Zilker Technology. -
New post-deploy command–Previously, the post-deploy hooks defined in the
.magento.app.yaml
file ran automatically after you deployed Magento to a Cloud Docker container using thecloud-deploy
command. Now, you must issue a separatecloud-post-deploy
command to run the post-deploy hooks after you deploy. See the updated launch instructions for developer and production mode. -
Added the
--rm
option to./bin/magento-docker
commands for the build and deploy containers. This removes the container after the task is complete. -
Updates to
build:compose
command–- Added the
--sync-engine="native"
option to thedocker-build
command to disable file synchronization when you generate the Docker Compose configuration file in developer mode. Use this option when developing on Linux systems, which do not require file synchronization for local Docker development. See Synchronizing data in the Docker environment.
- Added the
-
Changed the default file synchronization setting from
docker-sync
tonative
. Fix submitted by Mathew Beane from Zilker Technology.
-
-
Validation improvements–
-
Added validation to the deployment process for local Docker development environments to verify that the Cloud environment configuration includes the encryption key required to decrypt the database. Now, you get an error message in the log if the environment configuration does not specify a value for the encryption key.
-
Added a container health check to the Elasticsearch service to ensure that the service is ready before continuing with build and deploy processing. If the health check returns an error, the container restarts automatically.
-