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
仅仅在路由输出一句话
要用4s 加了cached好像不管用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
? 不推荐这样用,因为我已经踩过坑了。
在 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 也一样慢