Install magento with composer ``` composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition ``` ``` composer create-project --repository-url=https://repo.magento.com/ magento/project-enterprise-edition ``` Require the Cloud docker and ECE tools ``` composer require --no-update --dev magento/ece-tools magento/magento-cloud-docker ``` Update composer ``` composer update ``` Create Config files: .magento/services.yaml ``` mysql: type: mariadb:10.6 disk: 2048 redis: type: redis:7.0 opensearch: type: opensearch:2.4 disk: 1024 configuration: plugins: - analysis-icu - analysis-phonetic rabbitmq: type: rabbitmq:3.9 disk: 512 ``` .magento/routes.yaml ``` "http://{default}/": type: upstream upstream: "origenes:http" "http://{all}/": type: upstream upstream: "origenes:http" ``` .magento.app.yaml ``` name: origenes type: php:8.2 build: flavor: none dependencies: php: composer/composer: '2.2.4' # Enable PHP extensions runtime: extensions: - xsl - newrelic - sodium - xdebug # DNS names relationships: database: "mysql:mysql" redis: "redis:redis" opensearch: "opensearch:opensearch" rabbitmq: "rabbitmq:rabbitmq" # The configuration of app when it is exposed to the web. web: locations: "/": # The public directory of the app, relative to its root. root: "pub" # The front-controller script to send non-static requests to. passthru: "/index.php" index: - index.php expires: -1 scripts: true allow: false rules: \.(css|js|map|hbs|gif|jpe?g|png|tiff|wbmp|ico|jng|bmp|svgz|midi?|mp?ga|mp2|mp3|m4a|ra|weba|3gpp?|mp4|mpe?g|mpe|ogv|mov|webm|flv|mng|asx|asf|wmv|avi|ogx|swf|jar|ttf|eot|woff|otf|html?)$: allow: true ^/sitemap(.*)\.xml$: passthru: "/media/sitemap$1.xml" "/media": root: "pub/media" allow: true scripts: false expires: 1y passthru: "/get.php" "/static": root: "pub/static" allow: true scripts: false expires: 1y passthru: "/front-static.php" rules: ^/static/version\d+/(?.*)$: passthru: "/static/$resource" # The size of the persistent disk of the application (in MB). disk: 5120 # The mounts that will be performed when the package is deployed. mounts: "var": "shared:files/var" "app/etc": "shared:files/etc" "pub/media": "shared:files/media" "pub/static": "shared:files/static" hooks: # We run build hooks before your application has been packaged. build: | set -e composer install php ./vendor/bin/ece-tools run scenario/build/generate.xml php ./vendor/bin/ece-tools run scenario/build/transfer.xml # We run deploy hook after your application has been deployed and started. deploy: | php ./vendor/bin/ece-tools run scenario/deploy.xml # We run post deploy hook to clean and warm the cache. Available with ECE-Tools 2002.0.10. post_deploy: | php ./vendor/bin/ece-tools run scenario/post-deploy.xml # Default Magento 2 cron jobs crons: cronrun: spec: "*/5 * * * *" cmd: "php bin/magento cron:run" # Environment variables variables: env: CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com' CONFIG__STORES__DEFAULT__PAYPAL__NOTATION_CODE: 'Magento_Enterprise_Cloud' CONFIG__DEFAULT__SMILE_ELASTICSUITE_CORE_BASE_SETTINGS__ES_CLIENT__SERVERS: 'opensearch:9200' CONFIG__DEFAULT__SMILE_ELASTICSUITE_CORE_BASE_SETTINGS__ES_CLIENT__ENABLE_HTTPS_MODE: 0 CONFIG__DEFAULT__SMILE_ELASTICSUITE_CORE_BASE_SETTINGS__ES_CLIENT__ENABLE_HTTP_AUTH: 0 CONFIG__DEFAULT__SMILE_ELASTICSUITE_CORE_BASE_SETTINGS__ES_CLIENT__HTTP_AUTH_USER: "" CONFIG__DEFAULT__SMILE_ELASTICSUITE_CORE_BASE_SETTINGS__ES_CLIENT__HTTP_AUTH_PWD: "" ``` .magento.env.yaml ``` stage: global: SKIP_HTML_MINIFICATION: true X_FRAME_CONFIGURATION: SAMEORIGIN build: SCD_THREADS: 4 SCD_COMPRESSION_LEVEL: 8 SCD_MATRIX: "magento/backend": language: - en_US - pt_BR "magento/Luma": language: - en_US - pt_BR deploy: SCD_STRATEGY: "standard" MYSQL_USE_SLAVE_CONNECTION: true REDIS_USE_SLAVE_CONNECTION: true REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache' SEARCH_CONFIGURATION: _merge: true engine: ElasticSuite ELASTICSUITE_CONFIGURATION: _merge: true es_client: servers: 'opensearch:9200' indices_settings: number_of_shards: 1 number_of_replicas: 1 CRON_CONSUMERS_RUNNER: cron_run: true max_messages: 1000 consumers: - product_action_attribute.update - product_action_attribute.website.update - media.storage.catalog.image.resize - matchCustomerSegmentProcessor - codegeneratorProcessor - negotiableQuotePriceUpdate - exportProcessor - sharedCatalogUpdatePrice - sharedCatalogUpdateCategoryPermissions - inventory.source.items.cleanup - inventory.mass.update - inventory.reservations.cleanup - inventory.reservations.update - purchaseorder.toorder - purchaseorder.transactional.email - purchaseorder.validation - quoteItemCleaner - inventoryQtyCounter - inventory.reservations.updateSalabilityStatus - inventory.indexer.sourceItem - inventory.indexer.stock - media.content.synchronization - media.gallery.renditions.update - media.gallery.synchronization - async.operations.all ``` Install magento running the following ``` echo "127.0.0.1 magento2.docker" | sudo tee -a /etc/hosts ./vendor/bin/ece-docker build:compose --mode="developer" --sync-engine="native" --expose-db-port=3306 --with-cron --set-docker-host --with-xdebug docker-compose up -d docker-compose run deploy cloud-deploy docker-compose run deploy magento-command deploy:mode:set developer docker-compose run deploy magento-command config:set system/full_page_cache/caching_application 2 --lock-env docker-compose run deploy magento-command setup:config:set --http-cache-hosts=varnish docker-compose run deploy magento-command setup:upgrade docker-compose run deploy cloud-deploy sudo chown -Rh $(whoami): . ``` Now copy the followgin files - package.json.sample to package.json - Gruntfile.js.sample to Gruntfile.js - grunt-config.json.sample to grunt-config.json - dev/tools/grunt/configs/themes.js to dev/tools/grunt/configs/local-themes.js Install npm dependencies ``` docker-compose run deploy npm i ```