Как ограничить память композитора PHP Deployer?

Я запускаю PHP-деплойер для приложения 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 && /usr/local/bin/composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest" failed.  
                                                                                                                                                                                                                         
  Exit Code: 255 (Unknown error)                                                                                                                                                                                         
                                                                                                                                                                                                                         

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

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

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

# 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 && /usr/local/bin/composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest

Любые предложения, как это исправить?

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

Nico Haase 14.12.2020 12:24

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

justadev 14.12.2020 12:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
625
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы изменить бинарный файл композитора, используемый деплойнером, вам нужно установить 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');

Другие вопросы по теме