【Docker】Windows Docker 搭建nginx+php 访问框架应用极慢。如何解决磁盘IO问题?

最近在使用Docker For Windows 搞开发环境。

只是访问index.php是正常速度,但是访问框架应用时速度会变得极慢
下面贴出我的yml文件以及php的Dockerfile
docker-compose.yml

version: "3"

services:

nginx:

image: nginx:latest

container_name: nginx

restart: always

ports:

- "80:80"

volumes:

- ../nginx/conf:/etc/nginx/conf.d:cached

# - ../../www:/wwwroot:cached

networks:

dev:

ipv4_address: 172.19.0.2

php:

build: ../php

container_name: php73

restart: always

depends_on:

- nginx

volumes:

- ../../www:/wwwroot:cached

networks:

dev:

ipv4_address: 172.19.0.10

mysql:

image: mysql:5.7

container_name: mysql57

restart: always

depends_on:

- php

environment:

MYSQL_ROOT_PASSWORD: 123456

ports:

- "3306:3306"

volumes:

#- ../mysql/etc-mysql:/etc/mysql

- ../mysql/:/var/lib/mysql

networks:

dev:

ipv4_address: 172.19.0.20

networks:

dev:

driver: bridge

ipam:

config:

- subnet: 172.19.0.0/16

Dockerfile

FROM php:7.3-fpm-alpine

# Version

ENV PHPREDIS_VERSION 4.0.0

COPY ./inotify-2.0.0.tgz /tmp/inotify-2.0.0.tgz

# ifconfig eth0:0 173.200.7.100 netmask 255.255.255.0 up

# Libs

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \

&& apk add \

curl \

vim \

wget \

git \

openssl-dev\

zip \

unzip \

g++ make autoconf \

inotify-tools

# docker方式安装PDO extension # 安装扩展

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \

&& docker-php-ext-install pdo_mysql \

&& docker-php-ext-install pcntl \

&& docker-php-ext-install sysvmsg \

&& wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \

&& pecl install /tmp/redis.tar.tgz \

&& rm -rf /tmp/redis.tar.tgz \

&& docker-php-ext-enable redis \

&& pecl install swoole \

&& pecl install /tmp/inotify-2.0.0.tgz \

&& rm -rf /tmp/inotify-2.0.0.tgz \

&& docker-php-ext-enable inotify \

&& docker-php-ext-enable swoole

EXPOSE 9000

#设置工作目录

WORKDIR /wwwroot

仅仅在路由输出一句话
【Docker】Windows Docker 搭建nginx+php 访问框架应用极慢。如何解决磁盘IO问题?
【Docker】Windows Docker 搭建nginx+php 访问框架应用极慢。如何解决磁盘IO问题?
要用4s 加了cached好像不管用

回答

? 不推荐这样用,因为我已经踩过坑了。

在 2004 以前使用 Hyper-V 版本的 Docker Desktop 运行项目很慢,后来升级到 2004 后,听说 WSL2 有很大的提升,测试后发现任然很慢,瓶颈全在 IO 上,如果是部署应该使用 COPY 的方式把代码 copy 进去,如果是开发,建议还是选择 Windows 平台的集成环境,比如 Laragon

WSL 挂载的目录同理。

如果你的代码需要 Linux 环境,比如 Swoole,那建议你创建一个虚拟机或者使用 WSL2(不要使用挂载目录),然后使用 FTP 来同步你的代码(你可能需要写个脚本来自动执行 composer install 和 npm i ?,不然你需要手动去执行)。

或者直接搭建桌面环境的 Linux 虚拟机在里面操作(前端时间新装的 Kubuntu 发现运行不了 PHPStorm ?),而且大部分桌面 Linux 也不是那么好用,所以如果是非必要,还是建议你使用Windows 平台下的集成环境

mac 也一样慢

以上是 【Docker】Windows Docker 搭建nginx+php 访问框架应用极慢。如何解决磁盘IO问题? 的全部内容, 来源链接: utcz.com/a/81108.html

回到顶部