Как расширить память PHP Deployer composer?

#composer-php #php-deployer

#композитор-php #php-deployer

Вопрос:

Я запускаю PHP deployer для приложения magento из docker-compose. Apache находится внутри контейнера, и для php существует ограничение памяти. При необходимости у меня есть контроль над файлом Dockerfile.

В настоящее время моя проблема заключается в том, что при запуске dep deploy он выходит из строя:

 $ dep deploy 
✈︎ Deploying master on main
✔ Executing task deploy:prepare
✔ Executing task deploy:lock
✔ Executing task deploy:release
✔ Executing task deploy:update_code
✔ Executing task deploy:shared
➤ Executing task deploy:vendors
✔ Executing task deploy:failed
✔ Executing task deploy:unlock

In Client.php line 103:
                                                                                                                                                                                                                         
  The command "cd /home/public_html/releases/20201214130007 amp;amp; /usr/local/bin/composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest" failed.  
                                                                                                                                                                                                                         
  Exit Code: 255 (Unknown error)                                                                                                                                                                                         
                                                                                                                                                                                                                         
 

Если я запускаю строку composer внутри контейнера с добавлением неограниченного объема памяти, это работает:

 php -d memory_limit=-1 /usr/local/bin/composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest
 

Я попытался принудительно заставить deployer использовать для использования composer таким образом, но это не сработало:

 # in deployer.php:
set('composer', 'php -d memory_limit=-1  /usr/local/bin/composer');
 

Я думаю, это потому, что он не использует composer из набора при выполнении deployer:vendors , как видно из подробного журнала:

 ➤ Executing task deploy:vendors
[main] > if hash unzip 2>/dev/null; then echo 'true'; fi
[main] < true
[main] > if hash composer 2>/dev/null; then echo 'true'; fi
[main] < true
[main] > command -v 'composer' || which 'composer' || type -p 'composer'
[main] < /usr/local/bin/composer
[main] > cd /home/public_html/releases/20201214125356 amp;amp; /usr/local/bin/composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest
 

Есть предложения, как это исправить?

Комментарии:

1. Какую версию Composer вы используете? Для запуска composer install обычно не требуется столько памяти

2. Я запускаю composer 1.10.18. Я пробовал с composer 2.0.8, но он несовместим с моим проектом.

Ответ №1:

Чтобы изменить двоичный файл composer, используемый deployer, вам необходимо установить bin/composer , поэтому измените это

 set('composer', 'php -d memory_limit=-1  /usr/local/bin/composer');
 

для этого

 set('bin/composer', 'php -d memory_limit=-1  /usr/local/bin/composer');