Docker-composeで以前に作られたPHP環境をbuildしようとしたらエラーがでたのでメモ


起きたエラー

普通にdocker-compose buildして
ずらーーーーーーっと処理してくれてうまくいたかなあと思ったら
こんなエラーがでました。

terminal.
echo 'sendmail_path = "/usr/sbin/ssmtp -t"'
php -r 'copy('"'"'https://getcomposer.org/installer'"'"', '"'"'composer-setup.php'"'"');'
php -r 'if (hash_file('"'"'sha384'"'"', '"'"'composer-setup.php'"'"') === '"'"'48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5'"'"') { echo '"'"'Installer verified'"'"'; } else { echo '"'"'Installer corrupt'"'"'; unlink('"'"'composer-setup.php'"'"'); } echo PHP_EOL;'
Installer corrupt
php composer-setup.php '--install-dir=/usr/local/bin' '--filename=composer'
Could not open input file: composer-setup.php
ERROR: Service 'hoge' failed to build:

内容としては、
Docker-compose.ymlに書いているhogeというserviceのbuildがうまくいかなかったよ
composer-setup.phpっていうファイルがないからだよ
と言っているようなのですが、

その直前に、Installer corruptとでています。

どうやらこれがでていると、composerのバージョンが更新されたことによるエラーの可能性が高いらしいのです。

特に今回はhash_fileの直後に表示されているので、ハッシュ値が更新された可能性があります。

解決

ということで最新版を確認
https://getcomposer.org/download/

dockerfileにこちらの情報を書いていたので、最新のハッシュ値に更新して


# composer install
    && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
    && php -r "unlink('composer-setup.php');" \
    \
    && apk del .build-deps \
    && apk del .extension-build-deps

再build

# docker-compose build

これでうまくいきました◎

composerの更新は確認しておいたほうがよさぽよです。