Я запускаю 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
Любые предложения, как это исправить?
Я использую композитор 1.10.18. Я пытался использовать composer 2.0.8, но он не совместим с моим проектом.
Чтобы изменить бинарный файл композитора, используемый деплойнером, вам нужно установить 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');
Какую версию Composer вы используете? Для запуска
composer install
обычно не требуется столько памяти