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:
-
In your local environment, show the relationships for the active environment.
1
magento-cloud relationships
-
Confirm the
service
andtype
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:
-
Use SSH to log in to the remote environment.
-
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"])));'
-
Confirm the
service
andtype
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.