閲覧が無い故に良いメモ帳と化したプログラマーブログ

主にphp関連の技術ブログ。閲覧が無い為、マークダウンが使える良いメモ帳と化している。誤ってアカウントパスワードを書いても大丈夫だ。なぜなら誰も閲覧しないからな。安心のブログシステムである。

Laradock環境構築

Laradockとは

Laravelのアプリを開発する上で必要なComposer、MySQL、Nginxなど諸々のDockerコンテナを作成する為のイメージが入ったパッケージ。これらのコンテナを組み合わせアプリ開発をしていく。VagrantでいうHomesteadのような存在。

Dockerイメージとは

コンテナを作成するためのファイルシステム。イメージは公式な「リポジトリ」で配布されているもの(ベースイメージ)を取得してきてもよいし、自作することもできる。例えばRubyMySQLのパッケージを追加してひとつのイメージにしておけば、これを様々な環境で同一に使いまわすことができる。何と何を組み合わせるかはDockerfileに定義しておく。 今回はLaradockが提供しているイメージを使用することになるが、LaradockはLaravelやComposer等プログラム系を纏めたworkspace、WebサーバーであるNginx、DBのMySQLという単位でイメージを切り分けてある。(他にもRedis、phpMyAdminといった単位でたくさん用意してある) とりあえずのアプリを作成するのならworkspace、nginx、mariadbのイメージからコンテナを作成すればいい。

環境構築

準備

今回のフォルダ構成は下記の通り。 laradockと同階層にプロジェクトフォルダを置く。 projectフォルダ配下にはapp,bootstrap,config...とLaravelのフォルダが続く。
ちなみに既にプロジェクトフォルダがある場合、後ほど記載するlaradockの.envのマウントフォルダのパス設定を変えれば良い。
使うDBをプロジェクトによって切り替えたい場合は、laravelの.envを変えること。

Documents/
  ├ laradock/
  ├ project/

手順1.LaradockをCloneする

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

手順2.laradock用の.envを用意する

cd laradock
cp env-example .env

これはLaravelの.envではなくLaradockの.envである。 この.envに、コンテナとマウントするプロジェクトフォルダ等を定義していく。

「準備」記載のフォルダ構成を前提にlaradockの.envにマウントフォルダを下記のように定義する。

APP_CODE_PATH_HOST=../project

手順3.コンテナを作成する

docker-compose up -d nginx mariadb phpmyadmin redis workspace

最初はなかなか時間が掛かる。次からは早い。

手順4.コンテナの起動を確認する

docker-compose ps

stateがUpになっていればコンテナが起動している。


※ここでmariadbが動いていない問題が発生!!とりあえず下記の対応で何とかなった。

volumes:
- - ${DATA_PATH_HOST}/mariadb:/var/lib/mysql
+ #- ${DATA_PATH_HOST}/mariadb:/var/lib/mysql 

手順5.Laravelプロジェクトの作成

workspaceというコンテナに入りcomposerでプロジェクトを作成する。 まずは下記のコマンドでworkspaceコンテナに入る。

docker exec -it laradock_workspace_1 /bin/bash

ここでls -lすると、どのフォルダ階層かが分かる。「準備」記載の階層にプロジェクトフォルダを作るとして、Composerでプロジェクトを作成していく。

composer create-project laravel/laravel docker_app

完了

workspaceでphp artisan serveで稼働を確認できる。

その他

Laravelの.envのDB初期値設定は下記である。

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret