laradockでの環境設定手順

勉強した内容を忘れないように作成したメモです
dockerについて全く知識のない状態から勉強しながら作成しました
ちなみにmacOs Sierra 10.12.6です
docker for macのインストール手順は割愛します

dockerについて
http://paiza.hatenablog.com/entry/docker_intro

#dockerと仮想マシンの違い

コンテナはOSレベルの仮想化を行いその上でプロセスを動かす。
仮想マシンはマシンレベル（メモリやCPUなど）の仮想化を行いその上でゲストOSを動かす。
カーネルをホストと共有しているため早い
環境のインフラ周りをソースコード化できるので、共有が用意


#Dockerイメージ
コンテナのファイルシステム、設定を一つにまとめ保存したもの

#コンテナ
Dockerイメージから作られる仮想環境

#Dockerサーバ
Docker本体、コンテナのイメージの管理を行うサービス

#Dockerクライアント
ユーザーが実際にDockerを操作するときに使うコマンドやGUIツール

#Docker Hub
Dockerイメージを集めたサイト

#1.laradockのクローン〜ssh接続まで

1.laradockのクローン
`git clone https://github.com/LaraDock/laradock.git`

2.ディレクトリの移動
`cd laradock/`

3.設定ファイルの作成
`cp env-example .env`

4.イメージの作成
`docker-compose build apache2  mysql`

5.コンテナの起動
`docker-compose up -d workspace apache2 mysql`

6.プロセスの確認
`docker-compose ps`

7.sshで接続
`docker-compose exec workspace bash`

#2.ssh接続後〜laravelプロジェクトの作成
以下接続中の操作
1.プロジェクトの作成
`composer create-project  laravel/laravel`

2.接続終了 
`exit`

#3.apacheの設定変更と再起動

1.apacheの設定ファイルの編集
/laradock/apache2/sites/default.apache.conf


```default.apache.conf
ServerName laradock.dev
DocumentRoot /var/www/
~中略~
<Directory "/var/www/">
```
↓

```default.apache.conf
ServerName localhost
DocumentRoot /var/www/laravel/public/
~中略~
<Directory "/var/www/laravel/public/">
```
2.コンテナの停止
`docker-compose stop apache2`

3.イメージの作成
`docker-compose build apache2`

4.コンテナの起動
`docker-compose up -d apache2`

#4.gitからlaravelのプロジェクトをcloneする
以下はssh接続後の手順

1.ディレクトリを作成
`mkdir laravel`

2.ディレクトリにプロジェクトをクローンし、/vagrant以下に移動
カレントディレクトリの移動
`cd laravel`

プロジェクトのクローン
`git init`
`git clone -b ブランチ名 https://リポジトリのアドレス`

3..envファイルを作成する
`cd laravel/プロジェクト`
`cp .env.example .env`

4.composerをインストールしAPP_KEYの作成
`composer install`
`php artisan key:generate`

5./laravel以下の.envのmysqlの部分を編集する
/laradock以下にも.envがあるので注意
docker側のmysqlの設定に合わせるので記載はデフォルトの場合

```.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
```

↓

```.env
DB_CONNECTION=mysql
DB_HOST=laradock_mysql_1
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
```

6.mysqlのコンテナの再起動
一度dockerから抜けてホスト側で実行
`docker-compose stop mysql `
`docker-compose up -d --build mysql`

7.migrateとseed

`docker-compose exec workspace bash`
`cd /vagrant/laravel/プロジェクト`
`php artisan migrate`
`php artisan db:seed`

#5.apacheで表示するための設定
1.apacheの設定ファイルの編集
/laradock/apache2/sites/default.apache.conf


```default.apache.conf
DocumentRoot /var/www/laravel/public/
~中略~
<Directory "/var/www/laravel/public/">
```
↓

```default.apache.conf
DocumentRoot /var/www/laravel/プロジェクト/public/
~中略~
<Directory "/var/www/laravel/プロジェクト/public/">
```

2.apacheのコンテナの再起動
一度dockerから抜けてホスト側で実行
`docker-compose stop apache2 `
`docker-compose up --build -d apache2`

#6.nginxで表示するための設定
1.nginxのイメージの作成
`docker-compose build nginx`

2.コンテナの起動
`docker-compose up -d nginx`

3.プロセスの確認
`docker-compose ps`

4.コンテナの停止
`docker-compose stop nginx`

5.設定ファイルの変更
/var/www/laradock/nginx/sites/default.conf

```default.conf
root /var/www/public;
```
↓

```default.conf
root /var/www/laravel/プロジェクト/public;
```

6.nginxのイメージの作成
`docker-compose build nginx`

7.コンテナの起動
`docker-compose up -d nginx`