Services

The services.yaml file defines the services supported and used by Magento Commerce Cloud, such as MySQL, Redis, and ElasticSearch. You do not need to subscribe to external service providers. This file is in the .magento directory of your project.

The deploy script uses the configuration files in the .magento directory to provision the environment with the configured services. A service becomes available to your application if it is included in the relationships property of the .magento.app.yaml file. The services.yaml file contains the type and disk values. Service type defines the service name and version. Changing a service configuration causes a deployment to provision the environment with the updated services.

This affects the following environments:

  • All Starter environments including Production master
  • Pro Integration environments

For Pro, you must enter a Support ticket to install or update services in the Staging and Production environments. Indicate the service changes needed and include your updated .magento.app.yaml and services.yaml files in the ticket.

Default and supported services

We support and deploy the following services:

You can view default versions and disk values in the the current, default services.yaml file. The following sample shows the mysql, redis, and elasticsearch services defined in the services.yaml configuration file:

1
2
3
4
5
6
7
8
9
10
mysql:
    type: mysql:<version>
    disk: 2048

redis:
    type: redis:<version>

elasticsearch:
    type: elasticsearch:<version>
    disk: 1024

Service values

You must provide the type values: service name and version. If the service uses persistent storage, then you must provide a disk value. Use the following format:

1
2
3
<name>:
    type: <name>:<version>
    disk: <value-MB>

name

The name value identifies the service in the project. You can only use lower case alphanumeric characters: a to z and 0 to 9, such as redis.

This name value is used in the relationships property of the .magento.app.yaml configuration file:

1
2
relationships:
    redis: "<name>:redis"

You can name multiple instances of each service type. For example, we could use multiple Redis instances—one for session and one for cache.

1
2
3
4
5
redis:
    type: redis:<version>

redis2:
    type: redis:<version>

Renaming a service in the services.yaml file permanently removes the following:

  • The existing service before creating a new service with the new name you specify.
  • All existing data for the service is removed. We strongly recommend you snapshot your environment before you change the name of an existing service.

type

The type value specifies the service name and version. For example:

1
2
mysql:
    type: mysql:10.2

disk

The disk value specifies the size of the persistent disk storage (in MB) to allocate to the service. Services that use persistent storage, such as MySQL, must provide a disk value. Services that use memory instead of persistent storage, such as Redis, do not require a disk value.

1
2
3
mysql:
    type: mysql:10.2
    disk: 2048

The current default storage amount per project is 5GB, or 5120MB. You can distribute this amount between your application and each of its services.

Service relationships

In Magento Commerce Cloud projects, service relationships configured in the .magento.app.yaml file determine which services are available to your application.

You can retrieve the configuration data for all service relationships from the $MAGENTO_CLOUD_RELATIONSHIPS environment variable. The configuration data includes service name, type, and version along with any required connection details such as port number and login credentials.

To verify relationships in local environment:

  1. In your local environment, show the relationships for the active environment.

    1
    
    magento-cloud relationships
    
  2. Confirm the service and type from the response. The response provides connection information, such as the IP address and port number.

    Abbreviated sample response:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    redis:
        -
    ...
            type: 'redis:3.2'
            port: 6379
    elasticsearch:
        -
    ...
            type: 'elasticsearch:6.5'
            port: 9200
    database:
        -
    ...
            type: 'mysql:10.0'
            port: 3306
    

To verify relationships in remote environments:

  1. Use SSH to log in to the remote environment.

  2. List the relationships configuration data for all services configured in the environment.

    1
    
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    or

    1
    
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    
  3. Confirm the service and type from the response. The response provides connection information, such as the IP address and port number and any required username and password credentials.

Service versions

The following table lists the services used in Magento Commerce Cloud and their version compatibility with the Magento Cloud template.

Service Magento 2.3 Magento 2.2
elasticsearch Magento 2.3.1 and later—1.7, 2.4, 5.2, 6.5
Magento 2.3.0—1.7, 2.4, 5.2
Magento versions 2.2.8 and later—1.7, 2.4, 5.2, 6.5
Magento 2.2.0 to 2.2.7—1.7, 2.4, 5.2
mariadb 10.0 to 10.2 10.0 to 10.2
nginx 1.9 1.9
node 6, 8, 10, 11 6, 8, 10, 11
php Magento 2.3.3 and later—7.1, 7.2, 7.3
Magento 2.3.0 to 2.3.2—7.1, 7.2
Magento 2.2.10 and later—7.1, 7.2
Magento 2.2.5 to 2.2.9—7.0, 7.1
Magento 2.2.4 and earlier—7.0.2, 7.0.4, ~7.0.6, 7.1

Note: Beginning with ece-tools v2002.1.0, you must use PHP version 7.1.3 or later for both Magento 2.2 and 2.3.
rabbitmq 3.5, 3.7, 3.8 3.5
redis 3.2, 4.0, 5.0 3.2, 4.0, 5.0
varnish Magento 2.3.3 and later—4.0, 5.0, 6.2
Magento 2.3.0 to 2.3.2—4.0, 5.0
4.0, 5.0

When you set up the Elasticsearch service, check to ensure that you use a version that is compatible with the installed Elasticsearch PHP client. See Check Elasticsearch software compatibility.