php - MacOs 中的 Docker 非常慢

标签 php symfony docker docker-compose

我有这个 docker-compose.yml:

version: "3.1"
services:

    memcached:
      image: memcached:alpine
      container_name: universal-memcached2

    redis:
      image: redis:alpine
      container_name: universal-redis2

    mariadb:
      image: mariadb:10.4
      container_name: universal-mariadb2
      working_dir: /application
      volumes:
        - .:/application
        - "../data/db:/var/lib/mysql" # skasowac
      environment:
        - MYSQL_ROOT_PASSWORD=Haslo
        - MYSQL_DATABASE=sample
        - MYSQL_USER=user
        - MYSQL_PASSWORD=Haslo
      ports:
        - "8083:3306"


    webserver:
      image: nginx:alpine
      container_name: universal-webserver2
      working_dir: /application
      volumes:
          - .:/application
          - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "8080:80"

    php-fpm:
      build: phpdocker/php-fpm
      container_name: universal-php-fpm2
      working_dir: /application
      volumes:
        - .:/application
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini

    volumes:
        generated:
        var:
        static:

    phpmyadmin:
      image: phpmyadmin/phpmyadmin
      links:
        - mariadb
      environment:
        PMA_HOST: mariadb
        PMA_PORT: 3306
      ports:
        - '8081:80'

当我在 symfony 4 上运行我的最新项目时,它运行得非常缓慢...... :(

我有新的 MacO 和 Docker Desktop。 我目前正在学习 Symfony 和 Laravel 框架,但这对于 Docker 来说非常慢。它甚至没有工作。

我该如何修复它?

最佳答案

事实上,Docker 需要一个普通的 Linux 内核才能运行。不幸的是,Mac OS 和 Windows 无法提供此功能。因此,在 Mac OS 上有一个客户端来运行 Docker。除此之外,Mac OS 内核和应用程序(Docker 容器)之间还有一个抽象层,并且文件系统也不相同。因此,Docker 在 Mac OS 上运行缓慢。您无法像在 Linux 上那样在 Mac OS 上运行 Docker。

如果我需要提供一些关于真实用例的实例。我有同样的机器。所以,我在 Mac OS Mojave 上的 Docker v18 上使用 Symfony 4。这是我在 Docker 上的 Symfony 总执行时间。 (显然,这取决于您的前端和数据库查询,但我会尝试启发您了解主要逻辑。)

  • 第一次渲染 12000 毫秒
  • 使用 Symfony 缓存:344 毫秒
  • 使用 Docker 缓存(:用于卷的 Docker 的缓存属性):195 毫秒

只要我在没有 Docker 的情况下使用 Symfony,以下是我的总执行时间。

  • 不使用 Docker,使用 Symfony 缓存:82 毫秒

然而,我们可以做一些改进来获得更好的工作空间。例如,您可以使用这样的卷,

volumes:
        - .:/application:cached

关于php - MacOs 中的 Docker 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55951014/

相关文章:

php - 如何在多个 Symfony 实例之间共享应用程序缓存(共享缓存池)?

php - 未登录重定向到 "/login"

docker - 分配网络资源失败

PHP 父类、抽象类和接口(interface)文件名约定

php - 为什么有些网址可以包含 "fake"目录?

php - 在此模拟对象上找不到模拟方法 shouldRecieve()

symfony - 如何使用 Twig 和 Symfony2 显示自特定年份以来的年份列表

docker - Minikube在带有hyperkit驱动程序和VPN的Mac上不起作用

docker - 如何调试dist/不在Docker Cloud Build上生成?

javascript - 能够使用单个 html 作为另一个 html 页面的 'include'