0

我正在使用 Docker 来处理 Symfony 3 项目,这是以下堆栈:

-自定义 Php7.1FPM这是 DockerFile :

FROM php:7.1.0-fpm
MAINTAINER xxxxx xxxxxx <xxxx.xxxxxx@gmail.com>
ENV PHP_APCU_VERSION 5.1.8
ENV PHP_XDEBUG_VERSION 2.5.0
RUN apt-get update \
    && apt-get install -y \
        libicu-dev \
        zlib1g-dev \
    && docker-php-source extract \
    && curl -L -o /tmp/apcu-$PHP_APCU_VERSION.tgz https://pecl.php.net/get/apcu-$PHP_APCU_VERSION.tgz \
    && curl -L -o /tmp/xdebug-$PHP_XDEBUG_VERSION.tgz http://xdebug.org/files/xdebug-$PHP_XDEBUG_VERSION.tgz \
    && tar xfz /tmp/apcu-$PHP_APCU_VERSION.tgz \
    && tar xfz /tmp/xdebug-$PHP_XDEBUG_VERSION.tgz \
    && rm -r \
        /tmp/apcu-$PHP_APCU_VERSION.tgz \
        /tmp/xdebug-$PHP_XDEBUG_VERSION.tgz \
    && mv apcu-$PHP_APCU_VERSION /usr/src/php/ext/apcu \
    && mv xdebug-$PHP_XDEBUG_VERSION /usr/src/php/ext/xdebug \
    && docker-php-ext-install \
        apcu \
        intl \
        mbstring \
        mysqli \
        xdebug \
        zip \
    && pecl install apcu_bc-1.0.3 \
    && docker-php-source delete \
    && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin --filename=composer \
    && chmod +x /usr/local/bin/composer
  • 最后一个nginx图片
  • mysql :8.0.0

我使用 docker-compose 来构建这 3 个容器,这里是 docker-compose.yml :

front:
    image: nginx
    ports:
        - "81:80"
    links:
        - "engine:engine"
    volumes:
        - ".:/home/docker:ro"
        - "./docker/front/default.conf:/etc/nginx/conf.d/default.conf:ro"
engine:
    build: ./docker/engine/
    volumes:
        - ".:/home/docker:rw"
        - "./docker/engine/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro"
    links:
        - "db:db"
    working_dir: "/home/docker"

db:
    image: mysql:8.0.0
    ports:
        - "3306:3306"
    environment:
        - MYSQL_ROOT_PASSWORD=pwd
        - MYSQL_USER=myUSer
        - MYSQL_PASSWORD=pwd
        - MYSQL_DATABASE=bddProject

第一次没有缓存的时间是 1700 毫秒:

在此处输入图像描述

使用缓存的时间是:

在此处输入图像描述

一半时间是初始化时间:

那么什么样的问题会减慢我的项目的页面渲染速度?Docker 最新版本和 2 Go 与 Windows Hyper-v 系统。

谢谢您的帮助。


所以我在没有 xdebug ant 的情况下制作了另一个图像,结果是相同的(700ms 有缓存):

我的 Docker 文件:

FROM php:7.1.0-fpm
MAINTAINER XXXXX XXXXXX <XXXXXX.XXXXXX@gmail.com>
ENV PHP_APCU_VERSION 5.1.8
RUN apt-get update \
    && apt-get install -y \
        libicu-dev \
        zlib1g-dev \
    && docker-php-source extract \
    && curl -L -o /tmp/apcu-$PHP_APCU_VERSION.tgz https://pecl.php.net/get/apcu-$PHP_APCU_VERSION.tgz \
    && tar xfz /tmp/apcu-$PHP_APCU_VERSION.tgz \
    && rm -r \
        /tmp/apcu-$PHP_APCU_VERSION.tgz \
    && mv apcu-$PHP_APCU_VERSION /usr/src/php/ext/apcu \
    && docker-php-ext-install \
        apcu \
        intl \
        mbstring \
        mysqli \
        zip \
    && pecl install apcu_bc-1.0.3 \
    && docker-php-source delete \
    && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin --filename=composer \
    && chmod +x /usr/local/bin/composer

所以这是 Docker 卷的窗口管理,所以@Geoffrey Brier 你知道微软是否计划改善这个性能问题?是否有软或其他改善?

谢谢您的帮助。

4

1 回答 1

0

据我所知,有两件事是造成这些表演的原因:

  • Xdebug
  • Windows:这不是 troll,但众所周知的问题是,Docker 在 Windows 上处理容器卷的方式不如在 Linux 上高效。

您有三个解决方案:努力寻找稍微提高性能的方法,使用 Linux(例如在 VM 中)或处理它:)

于 2017-01-23T15:29:52.480 回答