PHP
Mac
Laravel
Docker
LaraDock

LaradockをMacで構築するまでの道のり

勉強を兼ねてLaradockの構築方法も載っていたので実際に自分のMacにて構築してみたときの話です。

なかなかスムーズに行かなかったので、構築するときに苦労したところを踏まえつつ「LaradockをMacで構築するまでの道のり」を書いていきます。


「Docker Desktop for Mac」をMacにインストール

まずは、Dockerの公式サイトにアクセスし、「Docker Desktop for Mac」をダウンロードします。

ダウンロードしたファイルを展開したら画面の指示に従いつつ、ターミナルにコマンドを打つ作業が終わったらインストールが完了します。

インストールが完了したら、Dockerを起動しておきます。

Docker-icon


Gitのインストール

次に、GitをMacにインストールします。

「Xcode(Xcode Command Line Tools)」をすでにインストールしているようであれば、この作業は必要ないみたいです。

ターミナルに下記のコマンドを打ち込みます。

git --version

これでGitのバージョンが表示されない場合は、Gitの公式サイトからインストールの操作を行う必要があります。


Laradockのダウンロード

LaradockをGitHubからダウンロードします。

下記の流れをターミナルで実行していきます。

~ $ cd

~ $ mkdir laravel_docker
~ $ cd laravel_docker

~laravel_docker $ git clone https://github.com/LaraDock/laradock.git

上記の流れを解説します。

まず、cdでホームディレクトリに移動します。

そして、mkdirでホームディレクトリ直下に「laravel_docker」ディレクトリを作成して移動します。

最後に、git cloneコマンドでGitHubからLaradockをダウンロードします。

「laravel_docker」ディレクトリの直下に「laradock」というディレクトリが生成されていたらOKです。

~laravel_docker $ ls

laradock


設定ファイルの作成

.envファイル(設定ファイル)を作成する必要があります。

下記コマンドを実行してください。

~laravel_docker $ cd laradock

~laradock $ cp env-example .env

「laradock」ディレクトリに移動します。

cpコマンドによって、「laradock」ディレクトリ内の「env-example」ファイルをコピーして.envファイルを作成します。


コンテナを初期化

コンテナの初期化では、「nginx」や「MySQL」などの各コンテナに必要なファイルのダウンロードや設定が実行されます。

~laradock $ docker-compose up -d nginx mysql workspace phpmyadmin

Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1 ... done
Creating laradock_phpmyadmin_1 ... done
Creating laradock_workspace_1 ... done
Creating laradock_php-fpm_1 ... done
Creating laradock_nginx_1 ... done

※ダウンロードには、かなり時間がかかります(數十分ぐらい)

ダウンロードが完了したら、5つのコンテナdocker:dind(Docker上でDockerを動かすためのもの)が起動しているかを下記コマンドで確認しましょう。

~laradock $ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
276655db49e5 laradock_nginx "/bin/bash /opt/star…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp laradock_nginx_1
3a50a897f3bc laradock_mysql "docker-entrypoint.s…" 2 minutes ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp laradock_mysql_1
bb4938cdfafb laradock_php-fpm "docker-php-entrypoi…" 2 minutes ago Up About a minute 9000/tcp laradock_php-fpm_1
e5749c2cc1c8 laradock_workspace "/sbin/my_init" 2 minutes ago Up About a minute 0.0.0.0:2222->22/tcp laradock_workspace_1
de652a051701 docker:dind "dockerd-entrypoint.…" 2 minutes ago Up About a minute 2375/tcp laradock_docker-in-docker_1
ae43ceba7f1a laradock_phpmyadmin "/docker-entrypoint.…" 2 minutes ago Up About a minute 0.0.0.0:8080->80/tcp laradock_phpmyadmin_1

docker container lsコマンドでも、起動中のコンテナを確認することができます。


Laravelプロジェクトの作成(一番苦労したところ)

Laravelプロジェクトを新規で作成して、LaravelのWelcome画面が表示されるところまでいきます。

このタスクが一番苦労したので、ボリュームが多いかと思われます。


「workspace」にLaravelプロジェクトを作成

コンテナの1つである「workspace」上に、Laravelプロジェクトを作成していきます。

下記コマンドを実行すると、「laradock」ユーザーにて「workspace」コンテナ(仮想環境)にログインすることができます。

~laradock $ docker-compose exec --user=laradock workspace /bin/bash

ログインすると、/var/wwwディレクトリに入ります。

ユーザー名は下記のようになるはずです。

laradock@e5749c2cc1c8:/var/www$

次に、「workspace」コンテナ上に下記コマンドでLaravelプロジェクトを新規で作成します。

例として、新規プロジェクトは「sample-app」と命名することにします。

laradock@e5749c2cc1c8:/var/www$ composer create-project laravel/laravel sample-app --prefer-dist "5.5.*"

--prefer-distを行うことで、「zip」形式でファイルをダウンロードするため、時間の短縮につながります。

新規プロジェクトを作成すると、Laravelのファイル一式が入った「sample-app」ディレクトリが作成されています。

「sample-app」ディレクトリが作成されてあることを確認したら、exitでいったんコンテナからログアウトします。


.envファイルの編集

localhostに接続できるようにするために、.envファイルの2箇所を編集します。

しかし、普通にテキストエディタで.envファイルを編集しても、その後にlocalhostに接続できない(LarabelのWelcome画面が表示されない)事態になります。

なので、.envファイルはターミナルでviコマンドを使って編集します。

viコマンドの使い方については、以下の記事が大変参考になりました。

viコマンド(vimコマンド)リファレンス - Qiita

1点目は、APP_CODE_PATH_HOSTの値を「sample-app」ディレクトリ用に変更します。

###########################################################

###################### General Setup ######################
###########################################################

### Paths #################################################

# Point to the path of your applications code on your host
# APP_CODE_PATH_HOST=../ # コメントアウトする
APP_CODE_PATH_HOST=../sample-app/ # 値を置き換える

(略)

2点目は、.envファイルの編集方法を調べているときに、MySQLのバージョンが8.0以上になっていると、セキュリティの関係でDockerがうまく動作しないという情報が落ちていました。

なので、「MYSQL」の部分も下記のように置き換えます。

### MYSQL #################################################

# MYSQL_VERSION=latest # 変更前(latest)
MYSQL_VERSION=5.7 # 変更後(5.7)


コンテナの再起動

.envファイルの編集が無事に終わったら、コンテナを再起動します。

まず、下記コマンドでコンテナを停止させます。

~laradock $ docker-compose stop

Stopping laradock_nginx_1 ... done
Stopping laradock_mysql_1 ... done
Stopping laradock_php-fpm_1 ... done
Stopping laradock_workspace_1 ... done
Stopping laradock_docker-in-docker_1 ... done
Stopping laradock_phpmyadmin_1 ... done

停止させたコンテナを、下記コマンドでもう一度起動させます。

~laradock $ docker-compose up -d nginx mysql

Starting laradock_mysql_1 ... done
Starting laradock_docker-in-docker_1 ... done
Starting laradock_workspace_1 ... done
Starting laradock_php-fpm_1 ... done
Starting laradock_nginx_1 ... done


Laradockを無事に構築できたか確認

全てのタスクが完了したら、http://localhost/ にアクセスします。

そうすると、以下の画像のようにLaravelのWelcome画面が正しく表示されます。

Laravel-Welcome-screen

これで、Docker上でLaravelにおける開発を進めていくことができます。