Create Magento App
Create ScandiPWA AppScandiPWA DocsGitHub
v2
v2
  • Create Magento App
  • Getting started
    • Getting Started
    • Prerequisites
      • Linux requirements
      • MacOS requirements
        • Apple Silicon
      • Windows requirements
    • Available commands
      • Start the application
      • Stop the application
      • Check application status
      • Enter application CLI
      • Explore application logs
      • Execute commands in Docker containers
      • Link a theme
      • Import database dump
      • ⚠️ Uninstall a project
    • Folder structure
    • Updating to New Releases
      • Testing Alpha Releases
    • Configuration File
      • System Configuration File
    • Supported Magento versions
    • How does it work?
    • Limitations
    • What Is New in Version 2
  • Usage guide
    • Using console commands
    • Accessing Docker containers
    • Linking a Scandi Theme
    • Enabling XDebug
    • Enabling SSL
    • Configuring PHP
    • Configuring Multi-Store
    • Configuring NewRelic
    • Access on the local network
    • Using custom domain
    • Using Enterprise Edition
    • Using OpenSearch
    • Importing database
      • Importing remote database
    • Converting legacy Docker setup to CMA
    • Improve Performance
  • Container images
    • PHP Images
      • PHP 8.3
        • PHP 8.3 with Magento 2.4 extensions
        • PHP 8.3 with XDebug
          • PHP 8.3 with XDebug with Magento 2.4 extensions
      • PHP 8.2
        • PHP 8.2 with Magento 2.4 extensions
        • PHP 8.2 with XDebug
          • PHP 8.2 with XDebug with Magento 2.4 extensions
      • PHP 8.1
        • PHP 8.1 with Magento 2.4 extensions
        • PHP 8.1 with XDebug
          • PHP 8.1 with XDebug with Magento 2.4 extensions
      • PHP 7.4
        • PHP 7.4 with Magento 2.4 extensions
        • PHP 7.4 with XDebug
          • PHP 7.4 with XDebug with Magento 2.4 extensions
      • PHP 7.3
        • PHP 7.3 with Magento 2.4 extensions
        • PHP 7.3 with Magento 2.3 extensions
        • PHP 7.3 with XDebug
          • PHP 7.3 with XDebug with Magento 2.4 extensions
          • PHP 7.3 with XDebug with Magento 2.3 extensions
      • PHP 7.2
        • PHP 7.2 with Magento 2.3 extensions
        • PHP 7.2 with XDebug
          • PHP 7.2 with XDebug with Magento 2.3 extensions
    • ElasticSearch Images
      • ElasticSearch 6.8
  • Scripts Extensions
    • PHP Extensions
      • PHP Extensions Package
      • (deprecated) ionCube Extension
  • Troubleshooting
    • Common Issues
    • CMA Debugging
    • Uninstall CMA
Powered by GitBook
On this page
  • Magento
  • Services
  • PHP
  • Nginx
  • MariaDB
  • SearchEngine (OpenSearch / ElasticSearch)
  • Redis
  • Composer
  • Varnish
  • SSL Terminator (Nginx)
  • NewRelic
  • Domain
  • Multi-Store Domains
  • SSL
  • Prefix

Was this helpful?

  1. Getting started

Configuration File

PreviousTesting Alpha ReleasesNextSystem Configuration File

Last updated 9 months ago

Was this helpful?

default cma.js
/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: {
        first_name: 'Scandiweb',
        last_name: 'Developer',
        email: 'developer@scandipwa.com',
        user: 'admin',
        password: 'scandipwa123',
        adminuri: 'admin',
        mode: 'developer',
        edition: 'community'
    },
    configuration: {}
};

The configuration file is created when you start the project cma.js, it's a tool that allows you to be in control of important parts of the project without headaches.

Magento

Magento configuration is located in magento field and contains the following fields:

  • first_name - Admin first name

  • last_name - Admin last name

  • email - Admin email

  • user - Admin user name

  • password Admin password

  • adminuri - Admin panel URL

  • mode - Magento mode (description and list of available modes is located )

  • edition - Magento edition. Allowed values: community, enterprise.

Services

In the configuration field we can configure PHP, Composer and Docker services.

PHP

PHP configuration is located in the php field and contains the following fields:

  • env - Environment variables for container object.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        php: {
            // let's add some extensions
            extensions: {
                fileinfo: {}
            },
            // and add custom env variable
            env: {
                COMPOSER_MEMORY_LIMIT: -1
            }
        }
    }
};

Nginx

Nginx configuration is located in the nginx field and contains the following fields:

  • image - Container image string. For Nginx default version is nginx:1.18.0 .

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        nginx: {
            // lets change nginx image to 1.19.0
            image: 'nginx:1.19.0',
            // and use custom nginx template
            configTemplate: './nginx.conf.template'
        }
    }
};

MariaDB

MariaDB configuration is located in the mariadb field and contains the following fields:

  • image - Container image. string.

  • useOptimizerSwitch - MariaDB specific setting. string or boolean. By default set to true for MariaDB 10.4 and newer version. During template file compilation true will be transformed to the following configuration:

    rowid_filter=off
/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        mariadb: {
            // lets change mariadb image to 10.4
            image: 'mariadb:10.4',
            
            // and use optimizer switch with desired flag
            useOptimizerSwitch: 'rowid_filter=off'
        }
    }
};

SearchEngine (OpenSearch / ElasticSearch)

SearchEngine configuration is located in the searchengine field and allows you to select elasticsearch and opensearch as options.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        searchengine: 'opensearch'
    }
};

For Magento 2.4.7 and older CMA by default will select elasticsearch for searchengine configuration. From Magento 2.4.8 and newer CMA by default will select opensearch for searchengine configuration.

ElasticSearch

ElasticSearch configuration is located in the elasticsearch field and contains the following fields:

  • image - Container image string.

  • env - Environment variables for container object.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        elasticsearch: {
            // lets change elasticsearch image version to 7.13.1
            image: 'elasticsearch:7.13.1',
            env: {
                // add additional environment variables
                ES_JAVA_OPTS: '-Xms512m -Xmx4096m'
            }
        }
    }
};

OpenSearch

ElasticSearch configuration is located in the opensearch field and contains the following fields:

  • image - Container image string.

  • env - Environment variables for container object.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        opensearch: {
            // lets change opensearch image version to 2.13.0
            image: 'opensearchproject/opensearch:2.13.0',
            env: {
                // add additional environment variables
                OPENSEARCH_JAVA_OPTS: '-Xms512m -Xmx4096m'
            }
        }
    }
};

Redis

Redis configuration is located in the redis field and contains the following fields:

  • image - Container image string. For Redis default version is 6.0.10-alpine

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        redis: {
            // lets change redis image version to 6.2.4
            image: 'redis:6.2.4'
        }
    }
};

Composer

Composer configuration is located in the composer field and contains the following fields:

  • version - Composer version string.

  • plugins - Map of Composer global plugins with a configuration that will be added to project image.

  • plugins[name].options - a string with additional options for composer global require <name> <options> command.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        composer: {
            // lets change composer version to 2.3.7
            version: '2.3.7',
            plugins: {
                'hirak/prestissimo': {
                    enabled: true
                }
            }
        }
    }
};

Varnish

Varnish configuration is located in the varnish field and contains the following fields:

  • enabled - A boolean option to manually enable or disable Varnish in the setup. (Default: false)

  • image - Varnish image string.

  • healthCheck - A boolean option to manually enable or disable Varnish HealthCheck in the setup. (Default: false)

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        varnish: {
            // lets change composer version to 6.0
            image: 'varnish:6.0'
        }
    }
};

SSL Terminator (Nginx)

SSL Terminator is an Nginx instance, its configuration is located in sslTerminator field and contains the following fields:

  • image - Container image string.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        sslTerminator: {
            // lets change nginx image version to 1.19
            image: 'nginx:1.19.0',
            // and use custom ssl-terminator nginx template
            configTemplate: './ssl-terminator.conf.template'
        }
    }
};

NewRelic

Available only on Linux. WSL/MacOS are not supported.

NewRelic is a monitoring service for applications and uses the following configurations fileds:

  • enabled - Boolean indicating if NewRelic is used in the application or not. Default is false.

  • licenseKey - License key string. Located in API Keys section on NewRelic.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    configuration: {
        newRelic: {
            enabled: true,
            licenseKey: '<LICENSE_KEY>'
        }
    }
};

Domain

Available in magento-scripts ~2.0.x and ~2.1.x

The host configuration is a string located in host field and by default, it is set to localhost . You can put your own host domain that will be set to nginx config as server_name and set Magento secure and unsecure base_url values.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    host: 'scandipwa.local'
};

Multi-Store Domains

Since magento-scripts 2.2.x!

storeDomains allows to set different domains for Magento stores.

Use store code as key and domain as a value.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    storeDomains: {
        admin: 'scandipwa.local'
    }
};

SSL

SSL configuration is located in the ssl field and contains the following values:

  • enabled - Enables or disables SSL in the application. boolean (false by default)

  • external_provider - Allows to use external SSL provider in the application. boolean (false by default)

  • ssl_certificate - SSL certificate file location string. You can put there your SSL certificate file location relative to the project root folder or use absolute value.

  • ssl_certificate_key - SSL certificate key file location string. You can put there your SSL certificate file location relatively to the project root folder or use absolute value.

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    ssl: {
        enabled: true,
        external_provider: false,
        ssl_certificate: './path/to/my/certificate',
        ssl_certificate_key: './path/to/my/certificate-key.pem'
    }
};

Prefix

Prefix configuration is a boolean located in the prefix field and by default, it is set to true .

/** @type {import('@scandipwa/magento-scripts').CMAConfiguration} */
module.exports = {
    magento: { ... },
    prefix: false
};

baseImage - PHP image without XDebug installed. You can select an image from the .

debugImage - PHP image with XDebug installed. You can select an image from the .

configTemplate - php.ini template file location. With this option, you can define your own php.ini file that will be used by PHP. (Original php.template.ini file can be found )

debugTemplate - xdebug.ini template file location. With this option you can tweak the XDebug configuration used in together with debugImage. (Original php-debug.template.ini file can be found )

fpmConfigTemplate - php-fpm.conf template file location. With this option you can tweak the PHP-FPM configuration used by PHP-FPM. (Original php-fpm.template.conf file can be found )

extensions - Map of extensions that will be used for the project. By default, it contains the following extensions that are required by Magento. You can add an extension that will be required by some Composer package, CMA will automatically install it with the correct version. Learn more about installing extensions in our guide on !

configTemplate - Nginx template file location string. With this option, you can define your own nginx.conf file that will be used by Nginx. (Original nginx.template.conf file can be found )

Nginx image is pulled from .

Can be set to any valid configuration from .

MariaDB image is pulled from .

ElasticSearch image is pulled from .

Magento 2.2.10 - 2.3.4 are using our that works on amd64 and arm64 architectures.

OpenSearch image is pulled from .

Redis image is pulled from .

plugins[name].enabled - a boolean which determines if the plugin should be enabled. For example, if you are using an older Magento version with Composer 1 plugin is enabled by default to speed-up installation and you can disable it!

configTemplate - varnish.vcl template file location. With this option, you can define your own varnish.vcl file that will be used by Varnish. (Original varnish.template.vcl file can be found )

Varnish image is pulled from .

configTemplate - SSL Terminator template file location string. With this option, you can define your own ssl-terminator.template.conf - File that will be copied inside the $CMA_CACHE/ssl-terminator/conf.d/ folder which is mounted in Nginx container to /etc/nginx/conf.d/ folder. string (Original ssl-terminator.template.conf file can be found )

Nginx image is pulled from .

Learn about adding NewRelic to your application .

Learn about adding a localhost domain to your application .

Learn about configuring Multi-Store domains in your application .

Learn about enabling SSL in your application .

But what prefixes are used for? Prefix is a unique identifier that will be appended to docker container and volume names to prevent possible interference between folders with similar names. (Interference between folders look like ) Setting prefix to false is generally not recommended but might be necessary for legacy projects.

here
PHP image list
PHP image list
here
here
here
Configuring PHP
here
Docker Hub
feature documentation
Docker Hub
ElasticSearch Hub
custom ElasticSearch image
Docker Hub
Using OpenSearch
Docker Hub
Prestissimo
here
Docker Hub
here
Docker Hub
here
here
here
here
that