ちゃなんログ

書き散らします。マラソンがしたいです。

Laravel環境をLaradockとDockerで構築する

なんです。
前回、php7の環境を構築したのですが予想以上に面倒だったので、今回はDockerを用いてLaravel環境を構築したいと思います。DockerイメージにはLaradockを用いたのですが、かなり手軽に構築することができるし、デフォルトで色々入っているので後々遊ぶのにも困らない気がします。自分はmacユーザなのでDocker for Macを使用します

Laradockとは

Laravel環境をDockerで簡単に構築するためのDockerイメージ
nginxやmysqlなど開発に必要なものを概ね揃えることができます

laradock.io

構築手順は公式も読んだのですが、うまくいかない部分もあったので先駆者の記事を梯子しました

Laradockをクローンし、.envファイルを作成

Laradockはクローンして使用します

GitHub - laradock/laradock: Docker PHP development environment.

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

クローンが完了したらディレクトリを移動し、.envファイルを作成します
すでにenv-exampleというファイルが存在するので今回はコピーして使用します

cd laradock
cp env-example .env

公式ではこの.envファイルに

DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

上記を追記し、mysqlなどの利用設定を行っています。
今回はとりあえずLaravelを起動するだけなので設定は必須ではありません。

必要なコンテナを起動

コンテナを起動していきます
Laravelの動作確認だけなら

docker-compose up -d nginx

これだけで問題ないです
全部起動する場合は

docker-compose up -d nginx mysql redis beanstalkd

これで起動します
初回はめっちゃ時間かかります
docker psで起動を確認すると

NAMES
laradock_mysql_1
laradock_redis_1
laradock_beanstalkd_1
laradock_nginx_1
laradock_php-fpm_1
laradock_workspace_1
laradock_docker-in-docker_1

こんな感じで色々起動しています
workspaceというのがlinuxのコンテナでここで作業を行います

Laravelのテストプロジェクトを作成

workspaceコンテナに入ってLaravelプロジェクトを作成します

docker exec -it laradock_workspace_1 /bin/bash

laradock_workspace_1の部分は適宜変更してください
workspaceにはcomposerなどがすでに用意されているので

composer create-project laravel/laravel checkapp

checkappの部分には自分が作成したいプロジェクト名が入ります

Do not run Composer as root/super user! See https://getcomposer.org/root for details

こんな感じでroot権限でcomposerを動かすなとwarningが出ますが無視します

docker-compose.ymlのボリュームを変更

このままでは作成したLaravelプロジェクトにDockerがマウントされていないので、修正します
そのため、一度Dockerを停止します

docker-compose stop

停止が完了したらdocker-compose.ymlを修正します

volumes:
  - ${APP_CODE_PATH_HOST}/checkapp:${APP_CODE_PATH_CONTAINER}

上記のように${APP_CODE_PATH_HOST}の後に作成したLaravelプロジェクト名を続けます
${APP_CODE_PATH_HOST}は複数箇所に記述されているので全て修正します

修正完了後、再びDockerを起動します

docker-compose up -d nginx

localhostにアクセスし、Laravelのスタートページが表示されれば成功です http://localhost/

感想

かなり手軽に構築することができました
phpバージョンも7系が入っているので色々遊んでみようと思います