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.
Il progetto che prevedeva uno script bash per il monitoraggio, tramite crontab, delle risorse di…
Portare un progetto editoriale sullo smartphone non significa necessariamente riscriverlo da zero. Con RicetteUmbre abbiamo…
Reading Time: 2 minutesMonitorare le risorse di un server o computer linux in modo semplice…
Reading Time: < 1 minuteEsclusione di una serie di prodotti selezionati tramite l'apposito menù e…
Reading Time: < 1 minuteNel video che vedete di seguito, a titolo di esempio, ho…
Reading Time: 2 minutesVediamo come è possibile fare il restart di php-fpm con capistrano dopo…