Mac M1でDockerを使ってLaravelプロジェクトを構築、PHPMyAdminを表示させる方法 (＋MakeupファイルでDockerコマンドを楽に）

<h1>概要</h1>

本記事では、Mac M1でDockerを使ってLaravelプロジェクトを構築する方法と、PHPMyAdminを表示させる方法を紹介します。Dockerを使用することで、環境を独立させて開発を行うことができます。

<h1>手順</h1>
<h6>Dockerをインストール:</h6>
Mac M1にDockerをインストールします。

以下の手順を実行します。
Docker公式サイト(https://www.docker.com/products/docker-desktop) からDocker Desktopをダウンロードしてインストールします。
Docker Desktopを起動し、Dockerアカウントにログインします。


<h6> Laravelプロジェクトの作成:</h6>
Dockerを使ってLaravelプロジェクトを作成します。以下の手順を実行します。
ターミナルを開き、Laravelプロジェクトを作成したいディレクトリに移動します。
以下のコマンドを実行し、Laravelプロジェクトを作成します。

```
docker run --rm -v $(pwd):/app composer create-project --prefer-dist laravel/laravel .
```


<h6> Makeupファイルの作成 </h6>
LaravelプロジェクトのフォルダにMakeupファイルを作成し、必要なタスクを定義します。以下の手順を実行します。
・LaravelプロジェクトのルートディレクトリにMakeupファイルを作成します。例えば、makeupfileという名前で作成します。
・Makeupファイルに、Laravelプロジェクトで実行したいタスクを定義します。例えば、以下のようなタスクを定義できます。 

```
up:
    docker-compose up -d

build:
    docker-compose build

create-project:
    docker-compose up -d --build
    docker-compose exec app composer create-project --prefer-dist laravel/laravel .
    docker-compose exec app composer require predis/predis

install:
    docker-compose up -d --build
    docker-compose exec app composer install
    docker-compose exec app cp .env.example .env
    docker-compose exec app php artisan key:generate
    docker-compose exec app php artisan migrate:fresh --seed

reinstall:
    @make destroy
    @make install

# 以下略
```


<h6> PHPMyAdminの設定 </h6>

Docker Composeを使ってPHPMyAdminのコンテナを設定します。以下の手順を実行します。
Laravelプロジェクトのルートディレクトリにdocker-compose.ymlという名前でファイルを作成します。
docker-compose.ymlに、PHPMyAdminのコンテナの設定を記述します。例えば、以下のような設定を追加できます。


```
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: laravel_app
    container_name: laravel_app
    restart: unless-stopped
    volumes:
      - .:/var/www/html
    networks:
      - laravel_net
    env_file:
      - .env

  db:
    image: mysql:8.0
    container_name: laravel_db
    restart: unless-stopped
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - laravel_net
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: laravel_phpmyadmin
    restart: unless-stopped
    ports:
      - '8080:80'
    depends_on:
      - db
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: secret

networks:
  laravel_net:

volumes:
  dbdata:
```


<h6> Dockerコンテナの起動 </h6>
Docker Composeを使って、LaravelプロジェクトとPHPMyAdminのコンテナを起動します。以下の手順を実行します。
ターミナルを開き、Laravelプロジェクトのルートディレクトリに移動します。
以下のコマンドを実行し、Dockerコンテナを起動します。

```
docker-compose up -d
```


・PHPMyAdminの表示:
ブラウザでPHPMyAdminのURLにアクセスし、PHPMyAdminの画面を表示させます。以下の手順を実行します。
ブラウザを開き、http://localhost:8080にアクセスします。
PHPMyAdminのログイン画面が表示されるので、以下の情報を入力してログインします。
ホスト: db
ユーザー名: root
パスワード: secret


<h1> Makeup 設定方法</h1>

【コード例】:
Makeupファイルの例:
```
up:
    docker-compose up -d

build:
    docker-compose build

create-project:
    docker-compose up -d --build
    docker-compose exec app composer create-project --prefer-dist laravel/laravel .
    docker-compose exec app composer require predis/predis

install:
    docker-compose up -d --build
    docker-compose exec app composer install
    docker-compose exec app cp .env.example .env
    docker-compose exec app php artisan key:generate
    docker-compose exec app php artisan migrate:fresh --seed

reinstall:
    @make destroy
    @make install

以下略
```


<h1>結論</h1>
 Dockerを使ってMac M1でLaravelプロジェクトを構築し、
PHPMyAdminを表示させる方法を紹介しました。
Dockerを使用することで、環境を独立させて効率的な開発を行うことができます。
ぜひ参考にしてみてください。