こんにちは、みったにです。
Laravelを勉強してみようと思い、環境構築は、Dockerが「軽くて、運用環境に近いから便利」という記事を見かけたので、やってみたのですが、環境構築でわりと苦労しました。
ということで、そのときにいろいろ試した結果を備忘録的に残しました。
このブログのコマンドをそのまま打っていけば、上手くできるはずです。
※今回はMacを使った場合に特化して解説しています。
LaravelをDockerで動かすときの手順
まずは、DockerをMacにインストールしましょう
Docker for Macをインストール
下記の公式サイトからDockerをインストールしてきます。
≫Dockerのインストールはこちら
インストール手順
- 「Sign Up」でアカウントを作成する
- Docker for Macをダウンロードする
- インストールする
次に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
上記の感じです。
ちなみにここまでの手順は、公式ドキュメントに沿っています。
エラーが出た人へ
もしかしたら、上手くコンテナが作成できなかった方がいるかもです。ちなみに僕もできなかったです。
こんなエラーが出たりしていないですか?
そして、「Creating laradock_phpmyadmin_1」のところでエラーになってたりしないですかね。
その場合は、phpmyadminのポート番号が重複していると思います。というわけで、以下を実施します。
- .envファイルを開く
- phpmyadminの「PMA_PORT=8080」を書き換え
phpmyadminの書き換えは、例えば、「PMA_PORT=8085」とかですかね。空いているポート番号に書き換えます。
これで保存して、もう一度コンテナを作成してみてください。エラーが消えるはずです。
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を再起動します。再起動するときは、下記コマンドを実行すると簡単です。
$ 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オプションによって、コンテナがあってもイメージ削除可
以上です。