【发布时间】:2022-01-27 07:35:12
【问题描述】:
我正在尝试在我的 Windows 11(内部版本:22000.376)笔记本电脑上设置开发环境。我最初在 Ubuntu 20.04 工作站上创建了环境,它运行良好。
它由以下容器组成;
- nginx (nginxinc/nginx-unprivileged:1.20.1-alpine)
- php (php:8.0.9-fpm-alpine3.14)
- Percona 数据库
- Redis 缓存
- 管理员
所有容器都驻留在同一个“应用程序网络”中,percona 和 redis 服务器具有专用卷。一切正常,但 PHP 容器。我尝试通过 Composer 在其上安装 Sulu CMS,但在安装过程中速度很慢。我在安装过程中发现了一些错误;
Failed to extract doctrine/annotations: (1) '/usr/bin/unzip' -qq '/var/www/html/tomtest/vendor/composer/tmp-6c0172a63ff2b134ca6392ad7ff111d1' -d '/var/www/html/tomtest/vendor/composer/77e4d756'
unzip: short read
但是安装成功完成。现在,当我尝试访问骨架管理仪表板时,加载登录屏幕大约需要 20 秒。好像 PHP 容器在 Windows 11 上运行不正确,有人遇到过这种设置的问题吗?
更新 (2021-12-28 19:30) 通过一些测试,发现我当前使用的挂载似乎是问题所在。
当前 php 容器设置:
php:
build:
context: ./
target: dev
container_name: ${PROJECT_NAME}_php
volumes:
- /mnt/c/Projects/sulu/docker/services/php/php.ini:/usr/local/etc/php/php.ini
- /mnt/c/Projects/sulu/:/var/www/html
- ~/.composer:/home/netbela/.composer
environment:
- PHP_IDE_CONFIG=serverName=${PROJECT_NAME}
networks:
- app-network
env_file:
- .env
ports:
- 9000:9000
定时执行作曲家创建项目:
/var/www/html $ time composer create-project sulu/skeleton testproject -n
real 7m 40.33s
user 2m 13.54s
sys 4m 41.40s
决定创建另一个没有本地目录但具有 docker 卷的 docker 实例,并为完全相同的命令计时。
php2:
build:
context: ./
target: dev
container_name: ${PROJECT_NAME}_php2
volumes:
- php2-data:/var/www/html
environment:
- PHP_IDE_CONFIG=serverName=${PROJECT_NAME}
networks:
- app-network
env_file:
- .env
ports:
- 9001:9001
volumes:
php2-data:
name: php2-data
测试输出:
real 0m 12.83s
user 0m 10.71s
sys 0m 2.81s
结论;它与正在挂载的本地目录有关。现在要弄清楚如何解决这个问题,以便我仍然可以使用 GIT 并在使用 docker 卷的同时从 Windows 桌面编辑我的代码。
【问题讨论】:
-
我听说过有关 Docker 在 MS Windows 上的速度的抱怨,但这并不是一个真正适合 SO 的编程问题。在任何情况下,即使是错误单,也需要提供性能指标,即您作为测试运行的一些实际代码。顺便说一句:您确实检查了错误票,对吗?
-
Docker 就像一个模拟器;在 Windows 上,它实际上是一个模拟器(必须模拟 Linux,而且速度很慢,我们无能为力)。考虑找原因,问如何优化。
-
感谢 cmets,我自己进行了一些测试,得出的结论是我使用的本地目录挂载不正确。我用这些信息更新了我的问题。
标签: php windows docker performance containers