Ritengo di non essere stato l’unico nel verificare che Magento 2 con Docker, su Mac OSX, genera l’errore Guru Meditation di Varnish; codice errore 503.
L’errore è dovuto ai problemi di performance di Docker con il file system di OSX; riporto qui l’articolo presenta nella documentazione Docker e in cui se ne parla https://docs.docker.com/docker-for-mac/osxfs-caching/
Fatto sta che, con la configurazione classica del nostro docker compose, di cui riporto un esempio, Magento 2 è veramente troppo lento, tanto lento da generare frequentissimi errori 503 di Varnish. Il nostro amato guru è in perenne meditazione 😀
Descritto il problema, vediamo ora come sia possibile risolverlo, senza abbandonare il nostro amato Mac.
In nostro soccorso viene docker-sync, un fantastico tool con cui gestire la condivisione dei volumi tra Docker e Mac OSX.
In pratica deleghiamo a docker-sync il compito di gestire la condivisione dei volumi.
Di seguito mostro come ho gestito io queta condivisione tramite la configurazione sia di docker-sync, sia di docker.
Ho generato il seguente file di configurazione docker-sync.yml
version: "2" options: verbose: true syncs: apache2-sync: src: './magento2' sync_userid: '1000' monit_high_cpu_cycles: 2 notify_terminal: true
Quindi ho creato il seguente file di configurazione, per docker-compose, docker-compose-osx.yml
version: "2" services: web: build: context: . dockerfile: ./Dockerfile links: - db volumes: - apache2-sync:/var/www/html:nocopy,delegated varnish: image: meanbee/magento2-varnish:latest environment: - VIRTUAL_HOST=magento2.docker - VIRTUAL_PORT=80 - HTTPS_METHOD=noredirect ports: - 80:80 links: - web depends_on: - web db: image: mariadb:10 ports: - 3300:3306 volumes: - ./database:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=magento2 - MYSQL_DATABASE=magento2 - MYSQL_USER=magento2 - MYSQL_PASSWORD=magento2 - TERM=meh phpmyadmin: image: phpmyadmin/phpmyadmin links: - db ports: - 8080:80 mailhog: container_name: mailhog image: mailhog/mailhog restart: always ports: - 1025:1025 #smtp server - 8025:8025 #web ui volumes: apache2-sync: external: true
Come vedete, rispetto al docker-compose.yml precedente, ho
Creati questi file di configurazione possiamo lanciare docker, ricordandoci di
quindi dobbiamo seguire la sequenza
Io, al fine di facilitarmi il lavoro e di dimenticarmi di lanciare docker-sync, ho preparato uno script sh come questo
#!/bin/sh echo "-------------------------------------\r\n"; echo "Start Magento 2 Docker for OSX System\r\n"; echo "-------------------------------------\r\n\r\n\r\n"; echo "Check and Stop containers if actives\r\n"; echo "------------------------------------\r\n"; docker-sync stop; echo "\r\n"; docker-compose -f docker-compose.mac.yml down; echo "\r\n"; echo "\r\n"; echo "Now start the containers\r\n"; echo "------------------------\r\n"; docker-sync start; echo "\r\n"; docker-compose -f docker-compose.mac.yml up -d; echo "\r\n"; echo "Docker Status\r\n"; echo "-------------\r\n"; docker ps;
Spero possa esserti utile.
Reading Time: < 1 minute Esclusione di una serie di prodotti selezionati tramite l'apposito menù…
Reading Time: < 1 minute Nel video che vedete di seguito, a titolo di esempio,…
Reading Time: 2 minutes Vediamo come è possibile fare il restart di php-fpm con capistrano…
"Stiamo scoprendo modi migliori di creare software,sviluppandolo e aiutando gli altri a fare lo stesso.Grazie…
Shopware ha rilasciato una security patch in grado di colmare alcune lacune di sicurezza per…
Il tema e-commerce ed omnicanalità ha sostituito l'ormai obsoleta multicanalità, vediamo di cosa si tratta.…