tra*_*ker 8 php symfony docker docker-compose
我有这个docker-compose.yml:
version: "3.1"
services:
memcached:
image: memcached:alpine
container_name: universal-memcached2
redis:
image: redis:alpine
container_name: universal-redis2
mariadb:
image: mariadb:10.4
container_name: universal-mariadb2
working_dir: /application
volumes:
- .:/application
- "../data/db:/var/lib/mysql" # skasowac
environment:
- MYSQL_ROOT_PASSWORD=Haslo
- MYSQL_DATABASE=sample
- MYSQL_USER=user
- MYSQL_PASSWORD=Haslo
ports:
- "8083:3306"
webserver:
image: nginx:alpine
container_name: universal-webserver2
working_dir: /application
volumes:
- .:/application
- ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
php-fpm:
build: phpdocker/php-fpm
container_name: universal-php-fpm2
working_dir: /application
volumes:
- .:/application
- ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini
volumes:
generated:
var:
static:
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mariadb
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
ports:
- '8081:80'
Run Code Online (Sandbox Code Playgroud)
当我在symfony 4中运行我的最新项目时,它的运行速度非常慢... :(
我有新的MacO和Docker桌面。我目前正在学习Symfony和Laravel框架,但这对于Docker来说非常慢。它甚至都没有工作。
我该如何修理?
pyb*_*pyb 16
使用 VirtioFS 显着提高了 macOS 上的 Docker 性能。
\nmacOS 12.5 和 Docker 桌面 4.15
\nDocker 桌面首选项 > 常规
\n[x] Use Virtualization framework (select this option)\nChoose file sharing implementation for your containers: pick VirtioFS\n
Run Code Online (Sandbox Code Playgroud)\nmacOS 12.3 (Intel) 或12.2 (Apple M1) 和Docker Desktop 4.6,您可以启用实验性功能:
\n\n\n要在 Docker Desktop 中启用 virtiofs:
\n确保您使用的是Docker Desktop 版本 4.6,可在此处获取
\n\n
\n- 导航到 \xe2\x80\x98Preferences\xe2\x80\x99(齿轮图标)> \xe2\x80\x98Experimental Features\xe2\x80\x99
\n- 选择\xe2\x80\x98使用新的虚拟化框架\xe2\x80\x99和\xe2\x80\x98启用VirtioFS加速目录共享\xe2\x80\x99切换
\n- 单击\xe2\x80\x98应用并重新启动\xe2\x80\x99
\n
Mac 版 Docker Desktop 4.6 上解锁速度提升成就 - 2022 年 3 月 16 日
\n在 MacBook Pro 2019、2.6 GHz 6 核 Intel Core i7 上,即使是简单的命令(例如docker ps
执行时间不到一秒)。之前需要3秒。
Luk*_*nga 11
正如其他答案中提到的,问题归结为 Docker 与 OSX 上的文件系统交互的方式。
我找到了一篇关于如何在 OSX 上加快速度的很棒的文章:
https://vivait.co.uk/labs/docker-for-mac-performance-using-nfs
从文章中,真正的解决方案是更改文件系统以使用 NFS,但由于我对 Docker 一无所知(它是在工作中为我设置的),我选择使用较新版本的 Docker 中提供的选项
我添加:delegated
到了volumes
in下的所有选项docker-compose.yml
。重新启动我的容器后,每个容器的速度几乎是以前的两倍。不如原生快,但足够快。
文章示例:
app:
build:
context: .
dockerfile: ./docker/app/Dockerfile
working_dir: /app
user: "www-data"
volumes:
- ./:/app:delegated
- ./:/another_folder:delegated
Run Code Online (Sandbox Code Playgroud)
NFS 示例很长,基本上需要复制文章的一半,所以我不会添加它,但是这个:delegated
解决方案是一个很好的起点。
小智 7
实际上,Docker需要一个普通的Linux内核才能运行。不幸的是,Mac OS和Windows无法提供此功能。因此,Mac OS上有一个客户端可以运行Docker。除此之外,Mac OS内核和应用程序(Docker容器)之间还有一个抽象层,文件系统也不相同。因此,Docker在Mac OS上运行缓慢。您无法像在Linux上那样在Mac OS上运行Docker。
如果我需要提供一些有关实际用例的实例。我有同一台机器。因此,我在Mac OS Mojave的Docker v18上使用Symfony 4。这是我的Symfony在Docker上的总执行时间。(显然,这取决于您的前端和数据库查询,但是我尝试向您介绍主要逻辑。)
只要我在没有Docker的情况下使用Symfony,以下就是我的总执行时间。
而我们可以做一些改进以获得更好的工作空间。例如,您可以使用这样的卷,
volumes:
- .:/application:cached
Run Code Online (Sandbox Code Playgroud)
一种选择是使用http://docker-sync.io/但您将无法获得与在基于 Linux 的机器上相同的性能。
Docker for Mac 在使用包含大量文件的共享卷时速度缓慢是一个已知问题,请参阅https://github.com/docker/for-mac/issues/77。
因此,出现了一些解决方法,例如:cached
docker -sync。然而它并不完全令人满意,因为与本机(Linux)相比它仍然很慢,并且 docker-sync 在同步时会消耗大量资源。
话虽这么说,有一个很好的替代方案,但不能说是完美的,那就是Mutagen。它几乎与 Linux 的本机共享卷一样快!
可以使用一个基准:
来源:Medium 上的文章
我为 Symfony 项目创建了一个完整的示例来展示如何使用它,但它可以用于任何语言的任何类型的项目。
归档时间: |
|
查看次数: |
4801 次 |
最近记录: |