LaravelをDockerで動かすときの手順【コマンドを順番に実行するだけ】

LARAVEL

こんにちは、みったにです。

Laravelを勉強してみようと思い、環境構築は、Dockerが「軽くて、運用環境に近いから便利」という記事を見かけたので、やってみたのですが、環境構築でわりと苦労しました。

ということで、そのときにいろいろ試した結果を備忘録的に残しました。

このブログのコマンドをそのまま打っていけば、上手くできるはずです。

※今回はMacを使った場合に特化して解説しています。

LaravelをDockerで動かすときの手順

LaravelをDockerで動かすときの手順

まずは、DockerをMacにインストールしましょう

Docker for Macをインストール

下記の公式サイトからDockerをインストールしてきます。
Dockerのインストールはこちら

インストール手順

  • 「Sign Up」でアカウントを作成する
  • Docker for Macをダウンロードする
  • インストールする

次にLaravelを使えるように、Dockerの準備をします。

Laravelを使用するためにDockerを準備

Laravelを使用するためのDocker準備

開発をしたいディレクトリに移動し、下記のコマンドでlaradockをクローンします。

$ git clone https://github.com/Laradock/laradock.git

※補足
gitを使用しています。Laravelで開発するならgitは使えた方が良いですが、とはいえ、わからない場合は、こちらからダウンロードできます。

起動するための準備

起動するためには、「.env」ファイルが必要なので、用意します。

コマンドは下記です。

$ cd laradock
$ cp env-example .env

laradockフォルダに移動して、env-exampleのファイルをenvファイルとしてコピーします。

コンテナの作成

用意したら、次はコンテナを作成します。

コマンドは下記です。

docker-compose up -d nginx mysql phpmyadmin redis workspace

ここのコンテナ作成はしばらく時間がかかります。

コンテナの作成が完了したら、次はDBの設定です。

DBの設定

作成した.envファイルの一番下とかに、下記を追記します。

DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

上記の感じです。

ちなみにここまでの手順は、公式ドキュメントに沿っています。

エラーが出た人へ

もしかしたら、上手くコンテナが作成できなかった方がいるかもです。ちなみに僕もできなかったです。

こんなエラーが出たりしていないですか?

Bind for 0.0.0.0:8080 failed: port is already allocated

そして、「Creating laradock_phpmyadmin_1」のところでエラーになってたりしないですかね。

その場合は、phpmyadminのポート番号が重複していると思います。というわけで、以下を実施します。

  • .envファイルを開く
  • phpmyadminの「PMA_PORT=8080」を書き換え

phpmyadminの書き換えは、例えば、「PMA_PORT=8085」とかですかね。空いているポート番号に書き換えます。

これで保存して、もう一度コンテナを作成してみてください。エラーが消えるはずです。

DockerにLaravelをインストール

DockerにLaravelをインストール

次にLaravelをインストールしていきます。

まずは、下記のコマンドを実行します。

$ docker-compose exec workspace bash

このコマンドを入力することで、workspaceコンテナに入ることができます。つまり、workspaceに対してコマンドを実行できるわけですね。

そして、下記を実行して、Laravelをインストールします。

$ composer create-project laravel/laravel testspace

「testspace」の部分は、作成したいアプリ名に変えても大丈夫です。

これでLaravelのインストールができますが、ちょっと時間がかかります。

インストールが完了したら、「Ctrl+d」でコンテナから抜け出します。

パスを修正

Laravelをインストールしたら、「.env」ファイルの「APP_CODE_PATH_HOST=../」の部分を書き換えます。

Laravelを実行できるように、インストールしたディレクトリを示すためです。

APP_CODE_PATH_HOST=../testspace/

testspaceのところを自分で変えた場合は、その変えたものを書いておきます。

これで、Laravelを実行できるように、場所を記すことができました。

Dockerを再起動してLaravelを起動する

Dockerを再起動してLaravelを起動する

最後に、Dockerを再起動します。再起動するときは、下記コマンドを実行すると簡単です。

$ docker-compose down && docker-compose up -d nginx

再起動できたら、最後に、ユーザーとパーミッションを設定しておきます。

ユーザーの設定

$ cd testspace
$ sudo chown -R 自分のユーザー名 ./

先ほどのLaravelをインストールしたフォルダに移動し、ユーザー名を設定します。root権限だと、パスワードを入力したりするので、面倒なので。

パーミッションの設定

$ chmod 777 storage
$ chmod 777 ./bootstrap/cache/

これで、「読み込み」「書き込み」「実行」の全てが許可されます。

Laravelへアクセス

最後にこちらにアクセスします。
http://localhost

どうでしょうか?
下記の画面が出力されたら、成功です。

Dockerのコマンド一覧

ちなみに、備忘録として、ここまでたどり着くまでに使用したコマンドを載せておきます。

実行中のプロセスと使用しているポート番号を表示

$ sudo lsof -i:8080

※例:ポート番号:8080

実行中のプロセスを終了

$ sudo kill 8080

※例:ポート番号:8080

全てのコンテナを停止

docker stop $(docker ps -q)

※「docker ps」の-qオプションを付けることでコンテナのIDのみを取得している。

全てのコンテナを削除

docker rm $(docker ps -q -a)

※「docker ps」で起動しているコンテナを表示するが、-aオプションを追加することで、停止中のコンテナも表示する。そして、そのIDのみを取得している。

全てのイメージを削除

docker rmi $(docker images -q) -f

※コンテナが削除されていないとイメージを削除できないが、-fオプションによって、コンテナがあってもイメージ削除可

以上です。