Проблема производительности приложений Laravel в Docker для Windows - PullRequest
1 голос
/ 17 марта 2019

Я пытаюсь запустить мое приложение laravel в док-контейнерах на моем ноутбуке (во время разработки) и обнаруживаю, что скорость приложения значительно ниже, чем, например, при запуске его с использованием XAMPP.

Мой ноутбукработает под управлением Windows 10 Pro (64-разрядная версия) с процессором i7-6700HQ, 16 ГБ ОЗУ и твердотельным накопителем.

Когда я запускаю свое приложение в Docker для Windows, среднее время загрузки страницы составляет примерно 3,5 секунды .

При запуске на локальном XAMPP среднее время загрузки страницы составляет приблизительно 350 миллисекунд ( 0,35 секунды ).


Длямоя настройка докера, я использую следующие image/Dockerfile:

FROM alpine:3.8
MAINTAINER Latheesan Kanesamoorthy

RUN apk add \
        --no-cache \
        --update \
        apache2 \
        composer \
        curl \
        php7 \
        php7-apache2 \
        php7-curl \
        php7-bcmath \
        php7-dom \
        php7-mbstring \
        php7-pdo_mysql \
        php7-session \
        php7-sockets \
        php7-tokenizer \
        php7-xml \
        php7-xmlwriter \
        php7-fileinfo \
    && mkdir -p /run/apache2 \
    && ln -sf /dev/stdout /var/log/apache2/access.log \
    && ln -sf /dev/stderr /var/log/apache2/error.log

COPY ./image/*.conf /etc/apache2/conf.d/
COPY ./image/php.ini /etc/php7/conf.d/99_custom.ini

RUN mkdir -p /storage/framework/testing
RUN mkdir -p /storage/framework/views
RUN mkdir -p /storage/framework/sessions
RUN mkdir -p /storage/framework/cache/data
RUN chown -R apache:apache /storage

WORKDIR /app

COPY ./src/composer.* ./
RUN composer install -n --no-autoloader --no-scripts --no-progress --no-suggest

COPY src .
RUN composer dump-autoload -o -n

EXPOSE 80

и docker-compose.yml:

version: '2.1'

services:

  mysql:
    container_name: myapp-mysql
    mem_limit: 512M
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myapp
      MYSQL_DATABASE: myapp
      MYSQL_USER: myapp
      MYSQL_PASSWORD: myapp
    ports:
      - "35000:3306"

  redis:
    container_name: myapp-redis
    image: redis:latest

  redis-commander:
    container_name: myapp-redis-commander
    image: rediscommander/redis-commander:latest
    hostname: redis-commander
    restart: always
    environment:
      - REDIS_HOSTS=local:redis:6379
    ports:
      - "7050:8081"
    links:
      - redis

  app:
    container_name: myapp-app
    mem_limit: 512M
    build:
      context: ""
      dockerfile: image/Dockerfile
    env_file:
    - image/env/development
    volumes:
    - ./src:/app:cached
    ports:
      - "25000:80"
    entrypoint: httpd -DFOREGROUND
    links:
      - mysql
      - redis

и использую следующие команды для его загрузки:

docker-compose down --remove-orphans
docker-compose up -d --build
docker exec myapp-app composer install --prefer-dist --no-suggest
docker exec myapp-app php artisan cache:clear
docker exec myapp-app php artisan migrate:fresh --seed

Как видите, версия докера использует redis в качестве драйвера для: кеша, кеша красноречивой модели, очереди и сеанса.

Локально для XAMPP я просто использую драйвер файла для всех.

Есть идеи, почему на докере так медленно работает?

PS Причина, по которой я хочу попробовать разработку с использованием среды докера, заключается в том, чтобы я мог сохранять идентичность своей среды разработки и производства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...