【まるるん備忘録】AWSでDockerを使ってLaravel環境を構築する
環境を構築し終わるまで少し沼にハマったのでメモを残します。
Dockerをインストールする。
※ Dockerをインストールする方法は省略します。
DockerをインストールしたらLaradockを導入する。
※ Laradockにはnginxやpostgresなど様々なコンテナが用意されているので、環境をパパッと構築したい人にオススメです。
$ mkdir プロジェクトディレクトリ
$ cd プロジェクトディレクトリ
$ git clone https://github.com/LaraDock/laradock.git
$ cd laradock
$ cp env-example .env
準備が出来たら各コンテナを起動する。
$ docker-compose up -d nginx redis beanstalkd postgres
コンテナから$ exit
し、.env
に使っているDBコンテナ名、redisコンテナ名、beanstalkdコンテナ名を記述する。
(人によってDBなど使っているコンテナが違うので、その都度コンテナ名を変更して下さい)
DB_HOST=postgres REDIS_HOST=redis QUEUE_HOST=beanstalkd
これでDocker側の環境構築は終了です。
Laravelのプロジェクトを作成する
laradockコンテナにログインする。
$ docker exec -it laradock_workspace_1 /bin/bash
$ composer create-project laravel/laravel プロジェクト名
create-project
をつけずにLaravelのプロジェクトデータを作成した場合はstorageへのアクセス権限関連でエラーを返すため、以下のURLを参考にエラーを修正する。
https://stackoverflow.com/questions/48619445/permission-denied-error-using-laravel-docker
ホストディレクトリのマウント
Dockerを停止させる。
docker-compose stop
docker-compose.ymlを編集しプロジェクトディレクトリをマウントするようにパスを全て変更する。
$ {APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
を$ {APP_CODE_PATH_HOST}/プロジェクト
名:${APP_CODE_PATH_CONTAINER}
に変更する
Laravelの開発を始める
再びDockerを起動する。
$ docker-compose up -d nginx redis beanstalkd postgres
Laravelを起動する。
php artisan serve --host 0.0.0.0
※ AWS上でLaravelが起動しているため、ホストマシン側でブラウザにlocalhostを指定してもページが表示されないので気をつけて欲しい。
AWSインスタンスにEIPを設定する。
AWSインスタンスのパブリックIPアドレスはちょくちょく変更されるのでEIPを設定する。
参考URL
https://www.agilegroup.co.jp/technote/ec2-elastic-ips.html
ホストマシンのブラウザにEIPを指定する
無事Laravelの画面が表示される。お疲れ様でした。
Dockerを使ってLaravel環境を構築する際の参考にしたサイト
https://qiita.com/oginom/items/19ebcd4444f79517011b