LaradockでLaravel環境構築自分用メモ


前提

  • macOS High Sierra 10.13.6
  • docker for mac インストール済み

手順

1. ディレクトリを作成し移動

$ mkdir myproject
$ cd myproject

2. GitHubからLaradockをクローンし移動

myproject

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

3. サンプルの環境設定ファイルをコピー

laradock
$ cp env-example .env

4. 上でコピーした.envファイルをvi等任意のエディタで開く

laradock
$ vi .env

5. .envファイルの以下の箇所を編集する

laradock/.env
### Paths #################################################

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../projectName/ # 任意のプロジェクト名追加

省略

### MYSQL #################################################

MYSQL_VERSION=5.7 # latestから5.7に変更
MYSQL_DATABASE=default # DB名を変えたい場合はここを変更
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

6. docker-composeコマンドで任意のコンテナを起動

laradock
$ docker-compose up -d nginx mysql phpmyadmin redis

# 初めはimageをダウンロードしてくるため、かなり時間がかかる
# 2回目以降は一瞬で起動完了する
# 最終的に以下のような表示が出たらコンテナの起動完了

Creating laradock_mysql_1            ... done
Creating laradock_redis_1            ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_phpmyadmin_1       ... done
Creating laradock_workspace_1        ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

# 念のため以下のコマンドで起動確認
$ docker-compose ps
           Name                          Command               State                    Ports                  
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp                                
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp       
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                
laradock_phpmyadmin_1         /run.sh supervisord -n -j  ...   Up      0.0.0.0:8080->80/tcp, 9000/tcp          
laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp                  
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp       

# State が Up で起動中

6. 以下のコマンドでworkspaceコンテナに入り、Laravelをインストール

laradock
$ docker-compose exec --user=laradock workspace bash
laradock@hogehoge:/var/www$ 
# rootで入るとcomposerの実行時に怒られるため、--userオプションでlaradockユーザーで入る

# 以下のコマンドでlaravelプロジェクト作成 projectNameは手順5.で指定した名前を使用する。
laradock@hogehoge:/var/www$ composer create-project laravel/laravel projectName

# インストールが完了するまで待つ、10〜15分程度?

7. コンテナ内のLaravelの環境設定ファイルを編集

laradock
# 初めにデフォルトで用意されている設定ファイルをコピー
laradock@hogehoge:/var/www$ cp .env.example .env

# コピーした設定ファイルをvi等任意のエディタで開く
laradock@hogehoge:/var/www$ vi .env

.env
# 省略

# 以下の箇所を修正する。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 # mysqlに変更 laradockが名前解決してくれる
DB_PORT=3306
DB_DATABASE=homestead # defaultに変更
DB_USERNAME=homestead # defaultに変更
DB_PASSWORD=secret

# 省略

REDIS_HOST=127.0.0.1 # redisに変更 laradockが名前解決してくれる
REDIS_PASSWORD=null
REDIS_PORT=6379

8. コンテナの再起動

laradock
# コンテナから抜ける
laradock@hogehoge:/var/www$ exit

# コンテナの停止と起動
$ docker-compose stop
$ docker-compose up -d nginx mysql phpmyadmin redis

9. 完了

localhostにアクセスしてLaravelの画面が表示されたらOK。

phpMyAdminはlocalhost:8080⇦こちら。

備忘

Laradockは環境変数ファイルにバージョン情報やコンテナに必要な情報をまとめているため、
基本的にdocker-compose.ymlをいじる必要がない。