composer install で the requested PHP extension intl is missing from your system と言われる解決方法 in Docker image

#はじめに
自分が悩んだ順に書いていきます。無駄に長いです。
Dockerfileを扱ったのは今回が初めてです。初心者でも読みやすいと思います。
もっといい方法あるよというコメントお待ちしております。

##エラー発生
[nojimage/twitter-text-php](https://packagist.org/packages/nojimage/twitter-text-php)
Twitterが公式で出しているライブラリがPHPに対応していなかったために導入
ローカル環境で下記コマンドを打つ
`composer require nojimage/twitter-text-php`

しかし下記のようにエラーが

```bash:shell
nojimage/twitter-text-php v3.0.1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
```

PHPの拡張モジュールである`intl`というものが無いらしい
[PHP: intl - Manual](http://php.net/manual/ja/book.intl.php)
調べると国際化関数のあれこれが入ってるそう。
日本語含め多言語テキストをパースするために必要ってことだろうか。

##intlの追加
`docker-php-ext-install`でPHP extensionは追加していけるそうだ。

```dockerfile:Dockerfile
FROM php:7.?.?-fpm 
RUN apt-get update \
  && docker-php-ext-install pdo_mysql (省略) intl #intl追加
```
これでいけると思い`docker-compose up --build`でコンテナを立ち上げるとエラーが。

```bash:shell
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
```
どうやらICUというものが必要らしい。

ICUとは**International Components for Unicode**のことで、
Unicodeに対する便利ライブラリ的なやつ。確かに国際化関数には必要そうだ。

ちなみに
International Christian University(国際基督教大学)でも、
Intensive Care Unit(集中治療室)でもない。
~~「ICU library」 で調べたら「図書館｜国際基督教大学（ICU）」が出てきた~~

##ICUの追加
今度は`docker-php-ext-install`では入らない
`apt-get install`でとってくる必要がある
詳細は割愛するが私は一度ここで`apt`ではなく`apk`コマンド叩いてエラーになった。

```dockerfile:Dockerfile
FROM php:7.?.?-fpm
RUN apt-get update \
　　　　&& apt-get install -y libicu-dev　\　#一行追加
  && docker-php-ext-install pdo_mysql (省略) intl 
```

これでいけると思いコンテナを起動する。起動には成功。
`docker exec -it　hogehoge bash`でコンテナに入り、
`composer require nojimage/twitter-text-php`を再度実行するが、

```bash:shell
[RuntimeException]                                                                                                            
  Failed to clone https://github.com/nojimage/twitter-text-php.git, git was not found, check that it is installed and in your   
  PATH env.                                                                                                                     
                                                                                                                                
  sh: 1: git: not found 
```

今度はgitが無いと怒られた。Docker内でcomposerを使うには必要らしい。

##gitの追加
```dockerfile:Dockerfile
FROM php:7.?.?-fpm
RUN apt-get update \
　　　　&& apt-get install -y libicu-dev　git　　\　#git追加
  && docker-php-ext-install pdo_mysql (省略) intl 
```
起動、入る、`composer`でまたしてもエラー

```bash:shell
Failed to download nojimage/twitter-text-php from dist: The zip extension and unzip command are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.
```
zipとunzipが無いようだ

##zipとunzipの追加
`The zip extension and unzip command`と表記がある通り、
zipはextensionでとれるがunzipはapt-getで入れる必要がある。

```dockerfile:Dockerfile
FROM php:7.?.?-fpm
RUN apt-get update \
　　　　&& apt-get install -y libicu-dev　git　unzip　　\　#unzip追加
  && docker-php-ext-install pdo_mysql (省略) intl zip #zip追加
```
今度は起動時にエラー

```bash:shell
configure: error: zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located
```
ZLIBが無いよとエラー。圧縮アルゴリズムのライブラリのようだ。

##ZLIBの追加
```dockerfile:Dockerfile
FROM php:7.?.?-fpm
RUN apt-get update \
　　　　&& apt-get install -y libicu-dev　git　unzip　zlib1g-dev　\　#zlib追加
  && docker-php-ext-install pdo_mysql (省略) intl zip 
```
この変更を最後に
`docker-compose up --build`
`docker exec -it　hogehoge bash`
`composer require nojimage/twitter-text-php`が通りました

#最後に
Dockerfileも肥大化してしまったのであまりスマートなやり方ではない気が。
インフラ基礎知識が曖昧なままコンテナ技術を使っていたので並行して知識をつけていきたい。

下記の記事を参考にタイトルをつけました
[composer install で the requested PHP extension intl is missing from your system と言われる解決方法](https://qiita.com/pugiemonn/items/12225fc7bca47cccf6a6)