[英]Laravel with Sail and Docker, really slow
我尝试在 Docker 中使用 Laravel Sail 运行一个全新的 Laravel 9.2 项目。 (包含 WSL2),并在 2 秒内加载索引页面。 对于我尝试在 Docker 上运行 Sail 的现有项目,它需要大约 7 秒而不是 Laravel Homestead 上的 0.3 秒。
我在这里找到了类似的帖子: ,但仍然无法正常工作。
./vendor/bin/sail up
不再工作“Docker 没有运行”,从我在Laravel 页面上检查的内容来看,我需要 WSL2。docker-compose.yml (由 Laravel Sail 生成)
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.1/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
这是因为该部分
volumes:
- '.:/var/www/html'
它是绑定到 Windows 文件系统的挂载。
不要将它放在 Windows 文件系统上,因为它会减慢很多速度。
将您的 docker-compose.yml 文件放在 WSL2 中,例如\\wsl$\Debian\home\[username]\projects\[your_project]
然后从那里组合起来,它会快得多。
这是一个常见的 WSL2 规则,如果您对任何服务使用主机绑定挂载volumes
部分 - 将源代码存储在 WSL 2 文件系统中,而不是 Windows fs 上。 docker 管理的卷不需要它。
您不需要更改任何其他内容,也不应该启用 wsl2 引擎并仅使用 wsl2。
您的项目文件在哪里?
如果您使用 composer 安装了 laravel 项目,并且它们位于您的 c 驱动器或其他本地磁盘上,这可能是问题所在。
将项目文件放在你的 linux 主目录中,例如\wsl$\Ubuntu\home[用户名][你的项目]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.