php - Docker PHP Laravel Composer 内存耗尽错误
问题描述
我有一个在 docker 上工作的 Laravel 项目。当我想添加带有“composer require”的包时,会发生此错误:
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 83886080 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 90
我已将 php.ini 中的 memory_limit 更改为“-1”。同样的错误继续存在。
我试过这个命令。更新 composer.json 文件,但每次都会被杀死。
php -d memory_limit=-1 /usr/bin/composer require waavi/sanitizer ~1.0
我试过“作曲家更新”关于内存限制的同样错误。
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 8192 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/GenericRule.php on line 36
作曲家.json 文件;
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.3|^8.0",
"aws/aws-sdk-php-laravel": "^3.1",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"graham-campbell/flysystem": "^3.0",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^8.12",
"laravel/passport": "^10.1",
"laravel/tinker": "^2.5",
"laravel/ui": "^3.2",
"league/flysystem-aws-s3-v3": "1.0.29",
"predis/predis": "^1.1",
"spatie/laravel-activitylog": "^3.16",
"spatie/laravel-permission": "^3.18",
"waavi/sanitizer": "~1.0",
"yajra/laravel-datatables-oracle": "~9.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"facade/ignition": "^2.5",
"fakerphp/faker": "^1.9.1",
"filp/whoops": "^2.0",
"jason-guru/laravel-make-repository": "^0.0.3",
"mockery/mockery": "^1.4.2",
"nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^9.3.3"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
},
"files": [
"app/Helpers/Helpers.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
我正在使用 MacOS 和 Docker。
我试图作曲家清除缓存和作曲家安装命令。
解决方案
在 docker-compose.yml
php:
container_name: php-server
build: ./php/
volumes:
- ./..:/var/www
- ./php/ini:/usr/local/etc/php // note that this line maps docker's /usr/local/etc/php
在你的 php Dockerfile 目录下的 ini/conf.d/ 创建一个名为 memory_limit.ini 的文件 所以你的目录将是 .../php/ini/conf.d/memory_limit.ini 里面的 memory_limit.ini
memory_limit = -1
推荐阅读
- spring - 即使从 rsocket js 客户端发送 SETUP 帧后,@ConnectMapping 也不会被触发
- nginx - Django 频道 - 客户端有时会收到消息,而不是其他时候,直到它根本没有收到它
- python - 在中,使用 python 进行 selenium 自动化,用于 webdriver_manager.chrome 和 ChromeDriverManager
- excel - 使用 Excel 公式进行产品标记
- datadog - 我可以将标签添加到父跨度 Datadog
- r - 在R中连接具有不同向量大小的两列
- c# - 多个DataContext 一TreeView 一DataGrid 不能同时处于活动状态
- hibernate - 非空属性以主键作为连接列一对一引用空值或瞬态值
- python - 如何使用每个 JSON 文件中的名称值批量重命名 .json 文件?
- php - Laravel eloquent 中是否有允许使用 Hypertables(Postgres)的选项