Featured image of post docker環境でcomposer requireがうまくいかなかった

docker環境でcomposer requireがうまくいかなかった

Twitter ツイート Hatena Bookmark ブックマーク

古いphpの場合はdockerのメモリ割り当てを多めにしたほうがいいかもです。 今回は大人の事情で使っているPHP7.1系でcomposer requireしたら、うまくいかなかったので色々と頑張った結果を記事に残しておきたいと思います。

docker-composeファイル

まず、大人の事情でPHP7.1の環境が必要だったのでdocker-composeを使って用意しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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したパッケージもは入ってなかった…

1
$ 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の環境は最新を保ったほうがいろいろと幸せになれますね!!

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。