dockerでPHPの開発環境を作ってみた！

#目的
今後、仕事で生かすためにdockerで様々な開発環境を作ってみる。
その一環として、PHPの開発環境を作成する。

#作成する環境
・php:7.2
・apache
・mysql:5.7
・phpmyadmin

#手順
①docker-compose.ymlを作成
　※コンテナの指示書
②php.iniを作成
　※phpの設定ファイル。マウントする。
③コンテナ実行
　docker-compose up -d
④index.phpを作成
⑤webサーバにアクセス
　http://localhost:8080/
⑥phpmyadminにアクセス
　http://localhost:4040/
⑦コンテナを破棄する
　docker-compose down

#各作業抜粋

##①docker-compose.ymlを作成

```docker-compose.yml
version: '3'

services:
  php:
    image: php:7.2-apache                    #apache込みphpイメージ
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini #バインドマウント（PHP設定ファイル）
      - ./html:/var/www/html                 #バインドマウント（ドキュメントルート）
    ports:
      - 8080:80                              #ポートフォワード（ホストの8080番ポートをコンテナの80番ポートへ転送）
  mysql:
    image: mysql:5.7                         #mysqlイメージ
    volumes:
      - ./mysql:/var/lib/mysql               #バインドマウント（データディレクトリ）
    environment:
      - MYSQL_ROOT_PASSWORD=root             #rootユーザのパスワード
      - MYSQL_DATABASE=test                  #データベース名
      - MYSQL_USER=test                      #ユーザ名
      - MYSQL_PASSWORD=test                  #パスワード
  phpmyadmin:
    image: phpmyadmin/phpmyadmin             #phpmyadminイメージ
    environment:
      - PMA_ARBITRARY=1                      #サーバをローカル以外にも指定できるようになる
      - PMA_HOST=mysql                       #接続先ホストに、mysqlコンテナを指定
      - PMA_USER=test                        #接続先ユーザに、mysqlのユーザを指定
      - PMA_PASSWORD=test                    #接続先パスワードに、mysqlのパスワードを指定
    links:                                   #mysqlコンテナにアクセスできるようにする設定
      - mysql
    ports:
      - 4040:80                              #ポートフォワード（ホストの4040番ポートをコンテナの80番ポートへ転送）
    volumes:
      - ./phpmyadmin/sessions:/sessions      #バインドマウント（データディレクトリ）
```

##②php.iniを作成

```php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
```

##③コンテナ実行（私は、PowereShellで）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/a01d3104-dbf8-6699-4bdf-6c3e951e74dd.png)

上記のディレクトリに移動し、コンテナ実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/6e0554f3-0652-3c58-557c-c9dfce401891.png)

マウントしたディレクトリが作成されている（html,mysql,phpmyadmin）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/7147e434-7e97-c5f3-bcff-33c0f283f839.png)

##④index.phpを作成
htmlフォルダの直下に、index.phpを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/99872c14-e5c5-6b90-ddfb-80e4b7d15a99.png)

##⑤webサーバにアクセス
http://localhost:8080/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/314ebad8-048b-5539-e01d-786809937295.png)

先ほど、ホストに配置したindex.phpがマウントされて、表示されました！

##⑥phpmyadminにアクセス
http://localhost:4040/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/b5fdd1fa-b2b6-3aee-d9a0-de3f8792101b.png)

##⑦コンテナを破棄する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/40fcdc83-b067-32e3-1674-1bdea0ea5972.png)
破棄されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/6a212da3-1836-81f2-93b6-e4c0ba81d62f.png)

#終わりに
PHPで開発環境っぽいものが完成しました。
あとは、実際開発しながら微調整ですかねぇ(*'▽')