【初心者】M1 Macを使ってPHPの環境構築をやってみた件（Docker編）

# はじめに

新たにPHPに挑戦する為、まずPHPの開発環境を構築することにしました。
環境構築は時間が空いてしまうと忘れがちなので、アウトプットの意味合いも兼ねて備忘録として残します。

使用しているPCはM1 Macになります。
今回はDocker（クジラのやつ）を用いて作っていきたいと思います。


# 手順

手順は下記の順番で行っていきます。

1.Dockerを起動
2.ファイルの準備
3.各ファイルへのコード入力
4.コンテナを起動
5.接続確認

　

# 1.Dockerを起動

まず、Dockerを使うには、「Docker for Mac」のインストールが必要になります。
Dockerをインストールしたら、起動した状態にしておいてください。

↓このクジラのやつですね。
![PHP2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/e9a26b05-2909-4724-fd69-6d2722c391a5.png)


# 2.ファイルの準備

Dockerを起動する場所を作成しましょう。
まずはフォルダを1つ作成します。今回は「php-test」という名前で作成しました。
![PHP1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/be124bd5-73d0-cbb4-7ea5-2f5951fcb021.png)


VS Codeから「php-test」を開いて下記のような構造で作っていきたいと思います。

```

php-test/
├── docker-compose.yml
├── mysql/
│   └── data/
├── nginx/
│   └── nginx.conf
├── php/
│   ├── Dockerfile
│   └── php.ini
└── www/
   └── html/
       └── index.php

```
　


VS Codeの画面だと、下記のようになります。
![PHP3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/c0222a5d-abc9-8b72-eba4-d2dc66a373d9.png)




# 3.各ファイルへのコード入力
次に、用意したファイルの中身にそれぞれコードを入れていきます。

コードを入れるファイルは

・docker-compose.yml
・nginx.conf
・Dockerfile
・php.ini
・index.php

の5つです。


### docker-compose.yml

```
version: "3"
services:
  nginx:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./www/html:/var/www/html
    depends_on:
      - php

  php:
    build: ./php
    volumes:
      - ./www/html:/var/www/html
    depends_on:
      - db

  db:
    platform: linux/x86_64
    image: mysql:5.7
    ports:
      - 13306:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    ports:
      - 8888:80
    depends_on:
      - db

```


### nginx.conf

```
server {
  listen 80;
  server_name _;

  root  /var/www/html;
  index index.php index.html;

  access_log /var/log/nginx/access.log;
  error_log  /var/log/nginx/error.log;

  location / {
      try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
      fastcgi_pass php:9000;
      fastcgi_index index.php;    
      fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include       fastcgi_params;
  }
}

```

### Dockerfile

```
FROM php:7.2-fpm
COPY php.ini /usr/local/etc/php/
RUN docker-php-ext-install pdo_mysql
```

### php.ini

```
date.timezone = "Asia/Tokyo"
```

### index.php
後で設定情報を確認するためにphpinfo();と入れておきます。

```
<?php
phpinfo();
?>
```

# 4.コンテナを起動
それぞれコードを入力後、コンテナを起動します。
VS Codeのターミナルを開き、docker-compose.ymlがあるフォルダ（今回はphp-test）に移動します。

ターミナルに下記のコードを入力してコンテナを起動します。
```
docker-compose up -d
```
※コードを入力しても、何も動かない場合はDockerが起動されていない、止まっていないかご確認ください。


結果、ターミナルに下記のようなコードが表示されます。
このように表示されれば成功です。
![PHP4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/55470901-53b0-ebc5-f740-290b56904c95.png)

同時にフォルダも自動で生成され、下記のように増えます。
![PHP5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/88034f87-5e85-c3db-5c07-f56ea057c2a7.png)



# 5.接続確認
最後に確認の為、以下のサイトにアクセスします。

下記画像のような画面が表示されたら、成功です。お疲れ様でした。

Webサイト：http://localhost:8080/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566966/f9baf878-9dd7-c180-18d8-7e658b058426.png)


以上になります。
最後までお読んで頂き、ありがとうございました。