前のパートに戻る 完了して次のパートへ  

  0-5 環境構築(Mac)

本教材では Docker で開発環境を提供します。

コンソールでコマンドを入力するとき、ホストOS(Mac)側で入力する場合とコンテナOS(Linux)側で入力する場合があります。本教材では、どちら側で実行するコマンドなのかを分かりやすくするため、プロンプトの記号として $ で始まるものをホスト側、 # で始まるものをコンテナ側としています。

ホスト側

$ docker-compose up -d

コンテナ側

# php artisan test

コマンド実行後エラーになった場合、実行する OS が違っているかもしれません。上記のルールを思い出してください。


1. Docker Desktop for Mac のインストール


環境は Docker コンテナで提供します。macOS の場合は Docker Desktop for Mac が必要です。

お使いのコンピュータにインストールされていなければ、下記ページにある「Get Docker」ボタンを押してダウンロードし、dmg ファイルを開いてください。

https://hub.docker.com/editions/community/docker-ce-desktop-mac/


2. Docker 用 git リポジトリのクローン


本教材では、Docker を利用して環境構築を行いますが、手っ取り早く構築できるよう、こちらで動作確認済みの環境を用意しました。Docker Desktop さえインストールされていれば、それ以外のソフトウェアをインストールせずに開発が進められますので、ぜひご利用ください。

ターミナルからお好きなディレクトリに移動して、まずは Docker 関連のファイルを作成します。

$ mkdir learning-laravel-tdd
$ cd learning-laravel-tdd
$ git clone https://github.com/nunulk/learning-laravel-tdd-docker docker


3. アプリケーション用ディレクトリの作成


本教材で開発する「ヨガスタジオ予約サイト」のアプリケーションを入れるディレクトリです。

以下のコマンドを実行してディレクトリを作成してください。

$ mkdir app

以下のようなディレクトリ構造になります。

learning-laravel-tdd
├── app
└── docker


4. Docker コンテナの起動


以下のコマンドを実行して、Docker コンテナを起動します。

$ cd docker
$ cp .env.example .env
$ docker-compose up -d 

Makefile を用意しましたので、 docker-compose up -d をタイプする代わりに make up でもコンテナを起動できます。


5. 動作確認


以下のコマンドを実行して、すべてのコンテナが起動しているかどうか確認してください。

$ docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                               NAMES
efdfdbab26da        nginx:1.17-alpine          "nginx -g 'daemon of…"   18 minutes ago      Up 2 minutes        0.0.0.0:80->80/tcp                  learning-laravel-tdd_web_1
9d99248880c6        mysql:8.0                  "docker-entrypoint.s…"   18 minutes ago      Up 2 minutes        33060/tcp, 0.0.0.0:3307->3306/tcp   learning-laravel-tdd_db-testing_1
efa4de1c294b        learning-laravel-tdd_app   "docker-php-entrypoi…"   18 minutes ago      Up 2 minutes        9000/tcp                            learning-laravel-tdd_app_1
7a67125ffc05        mysql:8.0                  "docker-entrypoint.s…"   18 minutes ago      Up 2 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   learning-laravel-tdd_db_1

どれかひとつでも起動していないものがあれば、再度 docker-compose up -d コマンドを実行してみてください。


6. アプリケーションの初期化


以下のコマンドを実行してコンテナ内に入り、アプリケーションを初期化します。

$ docker exec -it learning-laravel-tdd_app_1 ash
# composer create-project --prefer-dist laravel/laravel .

アプリケーションのソースコードを git で管理したい場合は、ホスト側( Mac )で git リポジトリを作成しておいてください(docker ディレクトリと同一階層にあるほうの app ディレクトリ)。

$ cd app
$ git init
$ git add -A
$ git commit -m "Initial commit"

app/.env ファイルにあるデータベース関連の変数を以下のように変更・追加します。

続いて、 config/database.php を以下の部分( + のついている行)を追加します。

続いて、phpunit.xml の以下の行を変更します。

7. Models ディレクトリの作成と User.php の移動

Laravel は、デフォルトでは Model クラスを artisan コマンドで生成すると app ディレクトリ直下に生成しますが、本教材では、Models ディレクトリを作って、そこに配置していきます。インストールで自動的に作られる User.php をあらかじめ Models ディレクトリに移しておきましょう。

まずは以下のコマンドを実行してディレクトリを作成します(コンテナ側でもホスト側でもどちらでも大丈夫です)。

# mkdir app/Models

続いて、app/User.php を app/Models 以下へ移動し、名前空間を変更します。

app/Models/User.php

User クラスを参照している箇所の名前空間もあわせて変更します。

変更するのは以下の2つのファイルです。

  • config/auth.php
  • database/factories/UserFactory.php

config/auth.php

database/factories/UserFactory.php

8. アプリケーションの確認

最後に、アプリケーションが動作するか確認するため、コンテナ内で以下のコマンドを実行してください。

# php artisan migrate
# php artisan migrate --database=mysql_testing
# php artisan test

php artisan test は Laravel 7.0 から導入されたコマンドです。7.0 未満をお使いの場合は、 ./vendor/bin/phpunit で代替してください。

# ./vendor/bin/phpunit

下記のように、エラーが出なければ、環境構築は成功です。

# php artisan test

   PASS  Unit\ExampleTest
  ✓ basic test

   PASS  Feature\ExampleTest
  ✓ basic test

  Tests:  2 passed
  Time:   1.88s

お疲れさまでした!

議論

4 質問

このコースの評価は?