Dockerでcomposerのinstallが弾かれる


やりたかったこと

docker-composeでLaravelの環境を作りたかった。

起きたこと

DockerFileやdocker-compose.ymlになんの変更も加えていないのに急にビルドが通らなくなった

エラーメッセージ

Step 6/13 : RUN php composer-setup.php
 ---> Running in 67d016a43b56
Could not open input file: composer-setup.php
ERROR: Service 'php' failed to build: The command '/bin/sh -c php composer-setup.php' returned a non-zero code: 1

どうやらcomposerのインストール周りでなにか問題が発生しているらしい。

解決策

Composerのサイト を見に行くと、インストール時のハッシュ値がいつの間にか変わっていた(バージョンアップによると考えられる)ので、Dockerfileのcomposerをインストールする部分を変更した。

- RUN php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('    composer-setup.php'); } echo PHP_EOL;"
+ RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('    composer-setup.php'); } echo PHP_EOL;"

この方法だとComposerのバージョンが変わるたびにDockerfileをいじらないといけないので、なにか良い方法があればコメントなどで教えて下さい。