まるるん備忘録

プログラミングやインフラ等、IT技術に関して気付いた事を書いているブログです。

【まるるん備忘録】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