0

Does anyone have set up their commerce cloud project with Magento cloud docker, I need help to know how the project and docker will be synced. container bash is working for me but app/ folder is remaining empty.

If anyone has done the setup, could you please help with this?

1

2 Answers 2

0

i'm working with magento cloud , you shall run from "root directory"

./vendor/bin/ece-docker build:compose --mode="developer" --sync-engine="mutagen"

when you stop all containers

docker-compose stop

and

docker-compose start

you shall run from root to syncronize all changes in shared files with docker

bash ./mutagen.sh --symlink-mode=portable

you can use this option "--symlink-mode=portable" with osx or windows

0

Install Magento with Composer

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition <install-directory-name>

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+/(?<resource>.*)$:
                    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

Reference: https://gist.github.com/rqsakai/940ad2017f351f080525ab56579dee06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.