Docker PHPにcomposerからライブラリ を入れようとしたらハマった話し。

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

composer自体はサクっと入る

Dockerfile

FROM php:7.3-fpm
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
ライブラリ を入れる
$ docker image build .
$ docker container run -d <imageID>
$ docker exec -it <containerID> bash
$ composer require <package>

とするとGitHubのpersonal tokenを聞かれた後、こんなエラーが出る。

  [RuntimeException]                                                                                                                
  Failed to clone https://github.com/php-fig/http-message.git, git was not found, check that it is installed and in your PATH env.  
                                                                                               
  sh: 1: git: not found 

git コマンドがないって読めるんだけど、zipファイルが解凍できないのが原因みたい。

PHP Pecl zipを入れよう

Dockerコンテナ内で実行するも...

$ docker-php-ext-install zip

お次はこんなエラー.

configure: error: Please reinstall the libzip distribution
The command '/bin/sh -c docker-php-ext-install zip' returned a non-zero code: 1

ひええ。

libzip-devを入れよう

Dockerコンテナ内で、

$ apt-get install -y libzip-dev

これで、composer requireまで完了できた。

Dockerfileは以下のような感じ。

FROM php:7.3-fpm

RUN apt-get update \ 
  && apt-get install -y libzip-dev
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN docker-php-ext-install zip

COPY composer.json /var/www/html
WORKDIR /var/www/html
RUN composer install