Я пытаюсь запустить мое приложение 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 Причина, по которой я хочу попробовать разработку с использованием среды докера, заключается в том, чтобы я мог сохранять идентичность своей среды разработки и производства.