Scénario :

Ma stack docker rame parce que je suis sur MacOS

Pourquoi?

Contrairement à Linux, sur Mac et Windows, Docker va lancer une machine virtuelle et installer tout ce qui l'a besoin dessus. C'est le transfert entre la VM et l'host qui rend Docker si lent sur les OS autres que Linux. Pour pallier à ça on peut utiliser un système de cache qui s'avère très rentable

Les trois type de cache :

  • delegated : Docker > Local , plus rapide en écriture

  • cached : Local > Docker , plus rapide en lecture

  • consistent : Local = Docker, valeur par défault

Comment le mettre en place :

Exemple du delegated :

  cli:
    build:
      context: .docker/php@7.1/cli
    user: docker:docker
    volumes:
      - ./.docker/php@7.1/cli/config/memory.ini:/usr/local/etc/php/conf.d/memory.ini:ro
      - ./:/var/www/html

On va rajouter cette ligne dans nos volumes :

  cli:
    build:
      context: .docker/php@7.1/cli
    user: docker:docker
    volumes:
      - ./.docker/php@7.1/cli/config/memory.ini:/usr/local/etc/php/conf.d/memory.ini:ro
      - ./:/var/www/html
      - ./:/var/www/html:delegated

Exemple du cached :

  http:
    image: nginx:alpine
    volumes:
      - ./:/var/www/html
    restart: on-failure
    ports:
      - 8963:80

Meme logique, on rajoute une ligne :

  http:
    image: nginx:alpine
    volumes:
      - ./:/var/www/html
      - ./:/var/www/html:cached
    restart: on-failure
    ports:
      - 8963:80