2021年03月02日
docker環境でcomposer requireがうまくいかなかった
古いphpの場合はdockerのメモリ割り当てを多めにしたほうがいいかもです。 今回は大人の事情で使っているPHP7.1系でcomposer requireしたら、うまくいかなかったので色々と頑張った結果を記事に残しておきたいと思います。
まず、大人の事情でPHP7.1の環境が必要だったのでdocker-comopseを使って用意しました。
version: "3"
services:
db:
image: mysql:5.7
volumes:
- ./var/log/mysql:/var/log/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=hoge
- MYSQL_USER=user
- MYSQL_PASSWORD=password
- TZ=Asia/Tokyo
ports:
- 3307:3306
php:
build:
context: ./docker/php/
dockerfile: Dockerfile
volumes:
- ./:/app:cached
depends_on:
- db
web:
image: nginx:alpine
ports:
- 80:80
depends_on:
- php
volumes:
- ./:/app:cached
- ./var/log/nginx:/var/log/nginx/
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- /app/.git
- /app/.data
- /app/docker
こんな感じのdocker-compose.yamlを用意しました。
追加で必要なライブラリがあったのでcomposer require
を実行したところ、何もエラーも表示されず終了してしまいました。
もちろんcomposer require
したパッケージもは入ってなかった…
$ docker-compose exec php php -d memory_limit=-1 /usr/bin/composer req polidog/php-chatwork-api -vvv
まじで謎すぎるんですが、なんかパッケージ情報のjsonを落としている途中で処理が終わってしまっている感じでした。
まじで謎すぎる・・・
memory_limit=-1
してるしなぁーとか思ったんですが、とりあえずdocker自体のメモリ割り当てを多くしてみました。(最初は2GBだったのを4GBに変更しました。)
再度composer requireしたら無事にインストール出来ました。
最後に
dockerで古いPHPの環境を用意するときは、docker自体のメモリ割り当てを多めにしておくとよいかも?? てかなるべくPHPの環境は最新を保ったほうがいろいろと幸せになれますね!!