勉強を兼ねてLaradockの構築方法も載っていたので実際に自分のMacにて構築してみたときの話です。
なかなかスムーズに行かなかったので、構築するときに苦労したところを踏まえつつ「LaradockをMacで構築するまでの道のり」を書いていきます。
「Docker Desktop for Mac」をMacにインストール
まずは、Dockerの公式サイトにアクセスし、「Docker Desktop for Mac」をダウンロードします。
ダウンロードしたファイルを展開したら画面の指示に従いつつ、ターミナルにコマンドを打つ作業が終わったらインストールが完了します。
インストールが完了したら、Dockerを起動しておきます。
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画面が正しく表示されます。
これで、Docker上でLaravelにおける開発を進めていくことができます。