phpのデプロイツールdeployerやECCUBE4の標準のDockerfile等、composerを利用する場合は、基本常にウェブから最新を取得して実行するのが推奨なため、今回2020-10-24にメジャーバージョンが1から2になったため盛大にコケる。
バージョンアップの差異に引っかからずうまくいくケースもあるが、composerの命名規則や細かい違いがあるため、大抵の場合失敗する。
対応策
deployerの場合
ローカルにcomposerがある場合は、それを利用する設定になっているため
単に1系のcomposerを配置しパスを通せば良い。
1系の最後
https://getcomposer.org/download/1.10.17/composer.phar
ECCUBE4のDockerfileの場合
ローカルにあるなしに関わらず問答無用でWEBから最新を取得している。
なので、composer.pharを配置したあとにDockerfileの一部だけ書き換える
| php \
&& mv composer.phar /usr/bin/composer \
&& composer config -g repos.packagist composer https://packagist.jp \
&& composer global require hirak/prestissimo \
&& chown www-data:www-data /var/www \
&& mkdir -p ${APACHE_DOCUMENT_ROOT}/var \
&& chown -R www-data:www-data ${APACHE_DOCUMENT_ROOT} \
&& find ${APACHE_DOCUMENT_ROOT} -type d -print0 \
| xargs -0 chmod g+s \
;
&& mv composer.phar /usr/bin/composer \
&& composer config -g repos.packagist composer https://packagist.jp \
&& composer global require hirak/prestissimo \
&& chown www-data:www-data /var/www \
&& mkdir -p ${APACHE_DOCUMENT_ROOT}/var \
&& chown -R www-data:www-data ${APACHE_DOCUMENT_ROOT} \
&& find ${APACHE_DOCUMENT_ROOT} -type d -print0 \
| xargs -0 chmod g+s \
;
以上。
追伸
あとプラグインを入れて、そのプラグインがローカルなリポジトリからコンポーネントを引っ張っている場合は通常のcomposer installでコケる。
その場合以下参照
https://qiita.com/applexco/items/00831ba61936139e8b26