8
9

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 5 years have passed since last update.

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

Last updated at Posted at 2019-06-09

勉強を兼ねて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における開発を進めていくことができます。

8
9
1

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
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?