Symfony 3和Docker(nginx,php7.1-fpm mysql8)在Windows上表现不佳

时间:2017-01-23 13:34:46

标签: nginx docker symfony php-7 mysql-8.0

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

-Custom 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毫秒:

enter image description here

缓存的时间是:

enter image description here

半场时间是初始化时间:

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

感谢您的帮助。

所以我在没有xdebug的情况下制作另一张图片,结果是一样的 (缓存700毫秒):

我的DockerFile:

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你知道微软是否计划改善这个性能问题? 有软或其他改善吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

据我所知,有两件事情对这些表演负责:

  • Xdebug的
  • Windows:它没有巨魔,但是一个众所周知的问题是,Windows上Docker处理容器卷的方式不如Linux上那么高效。

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