0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

概要

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

手順

Dockerをインストール:
Mac M1にDockerをインストールします。

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

Laravelプロジェクトの作成:
Dockerを使ってLaravelプロジェクトを作成します。以下の手順を実行します。 ターミナルを開き、Laravelプロジェクトを作成したいディレクトリに移動します。 以下のコマンドを実行し、Laravelプロジェクトを作成します。
docker run --rm -v $(pwd):/app composer create-project --prefer-dist laravel/laravel .
Makeupファイルの作成
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

# 以下略
PHPMyAdminの設定

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:
Dockerコンテナの起動
Docker Composeを使って、LaravelプロジェクトとPHPMyAdminのコンテナを起動します。以下の手順を実行します。 ターミナルを開き、Laravelプロジェクトのルートディレクトリに移動します。 以下のコマンドを実行し、Dockerコンテナを起動します。
docker-compose up -d

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

Makeup 設定方法

【コード例】:
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

以下略

結論

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?