Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Docker for Windows上的Laravel应用程序性能问题_Php_Windows_Laravel_Docker - Fatal编程技术网

Php Docker for Windows上的Laravel应用程序性能问题

Php Docker for Windows上的Laravel应用程序性能问题,php,windows,laravel,docker,Php,Windows,Laravel,Docker,我试图在笔记本电脑上的docker容器中运行我的laravel应用程序(在开发过程中),发现与使用XAMPP运行相比,该应用程序的速度非常慢 我的笔记本电脑运行的是Windows10Pro(64位),配有i7-6700HQ CPU、16GB RAM和SSD 在docker for windows中运行应用程序时,平均页面加载时间约为3.5秒 在本地XAMPP上运行它,平均页面加载时间约为350毫秒(0.35秒) 对于docker设置,我使用以下图像/Dockerfile: FROM alpin

我试图在笔记本电脑上的docker容器中运行我的laravel应用程序(在开发过程中),发现与使用XAMPP运行相比,该应用程序的速度非常慢

我的笔记本电脑运行的是Windows10Pro(64位),配有i7-6700HQ CPU、16GB RAM和SSD

在docker for windows中运行应用程序时,平均页面加载时间约为3.5秒

在本地XAMPP上运行它,平均页面加载时间约为350毫秒(0.35秒)


对于docker设置,我使用以下
图像/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
如您所见,docker版本使用redis作为驱动程序:缓存、雄辩模型缓存、队列和会话

在本地,对于XAMPP,我只是使用文件驱动程序

知道为什么docker的表现这么慢吗


另外,我之所以想尝试使用docker环境进行开发,是为了让我的开发和生产环境保持一致。

windows上的docker性能通常很差。您可以采取一些步骤来改进它,但它永远无法与unix系统相比。最有效的步骤是确保所有依赖项(
供应商
节点_模块
)都安装在容器中,并且只有项目文件(即:
应用程序
)在主机上。这应该会加快速度。除此之外,您还可以使用它更好地了解瓶颈所在。也就是说,350ms的速度仍然非常慢,因此应用程序的某些方面可能会加剧这种速度。相比之下,我的应用程序每页加载时间>50ms是很少见的,除非有很多查询在运行,一个无查询的Laravel页面通常需要我有雄辩的模型缓存、空间/级别权限检查和其他几条查询在每页加载时间运行。缓存预热后,我看到大约200毫秒的响应时间。所以,在windows上使用docker似乎没有任何帮助,我还不如双启动ubuntu。也许如果你在linux服务器上测试它是否会面临同样糟糕的性能?我相当肯定该应用程序在linux上会运行得尽可能快。问题是我是在windows上开发的,我试着让它在docker下运行,似乎windows docker与linux上的本机docker并不接近。