今回Docker for Macを使って比較的簡単にLarabel環境を構築できましたので紹介します。
DockerはVagrantに比べて環境構築がサクッと早く構築できるのでとてもおすすめです。
さらに今回使っているlaradoc
というライブラリを使えばphpのバージョン指定やnginx、php-fpm、データベース(MySQLやPostgresql、Redisなど)の設定もDockerでかんたんに構築できますのでかなり効率的だと思います。
環境
今回は下記の環境で構築しています。
- Mac OS 10.12
Docker for Macのインストール
まずDocker for MacをインストールしてMacでDockerが使えるようにします。
Docker for Macは非Linux環境でサクッとLinux環境を構築するのに適したコンテナを作成できるツールです。
https://docs.docker.com/docker-for-mac/
Get Docker for Mac [stable]
ボタンをクリックしてDocker.dmg
をダウンロードします。
Docker.dmg
をダブルクリックします。
Docker
のアプリフォルダをApplications
フォルダに移動します。これでDocker for Mac
のインストールは完了です。
Applications
フォルダからDocker
をダブルクリックして起動してください。
初回起動時は下記の画面が表示されます。Next
をクリックします。
Docker for Macの起動には管理者権限が必要という事です。OK
ボタンをクリックして管理者のパスワードを入力します。
パスワード入力してOKをクリックするとステータスバーにDockerのアイコンが追加され下図のポップアップが表示されます。
Got it!
ボタンを押して閉じましょう。
ちなみにステータスバーのDockerのアイコンをクリックすると各種設定を行えます。
Dockerの起動状態や、停止など行えます。
これでDockerを使うための下記のツールがインストールされた状態です。
名前 | 説明 |
---|---|
docker | Dockerの実行環境そのもの |
docker-compose | 複数のコンテナを利用して一つのサービスを提供する場合に YAML 一発で構築出来るようにするツール |
docker-machine | dockerをバーチャルホストや Mac、Windows でも使えるようにしてくれるもの |
ターミナルを開いて実際にインストールされたか確認してみましょう。
ターミナルで実行
docker --version
docker-compose --version
docker-machine --version
下図のようにバージョン情報が確認できれば正常にインストールできています。
Laradocの導入
Dockerを使ってLaravel環境を構築するならLaradockがとても便利です。Laravel環境を構築するための下記の環境がdocker-composeを使ってコマンド一発で構築できます。
- Nginx
- PHP(7.0, 5.6, 5.5に切り替え可能)
- Memcached、HHVM、Beanstalkd、PHP-FPM
- composer
- MySQL(Postgres, MariaDBに変更可能)
- Redis
- Laravel
それでは任意のLaravelのワークフォルダを作成してそこにターミナルで移動し、Laradocのソース一式をGithubでダウンロードします。
mkdir laravelwork
cd laravelwork
git clone https://github.com/LaraDock/laradock.git
cd laradock
Laradocワークスペースの起動
まずはワークスペース(workspace)のコンテナを起動します。このworkspaceはcomposerやnodeのツールを用意しているコンテナになります。workspaceを起動してLaravelプロジェクトを作成しておきます。
ターミナルで実行
docker-compose up -d workspace
初回は時間がかかりますが気長に待ちましょう。
下図のように表示されれば作成完了です。
コンテナが起動したらdocker-compose ps
コマンドで起動したworkspaceのコンテナ名を取得します。
ターミナルで実行
$ docker-compose ps
WARNING: The INSTALL_PRESTISSIMO variable is not set. Defaulting to a blank string.
Name Command State Ports
-------------------------------------------------------
laradock_application_1 true Exit 0
laradock_workspace_1 /sbin/my_init Up
workspaceのコンテナ名がlaradock_workspace_1
である事がわかったので、そのコンテナ名を指定してbashでログインします。
ターミナルで実行
docker exec -it laradock_workspace_1 /bin/bash
workspaceのコンテナは/var/www/laravel
内のファイルが共有フォルダになっています。なので、そこに移動してcomposer
でLaravelプロジェクトを作成します。
ターミナルで実行
cd /var/www/laravel
composer create-project laravel/laravel laraveltest --prefer-dist
Laravelプロジェクトは作成に多少時間がかかりますので気長に待ちましょう。
作成が完了したらexit
でコンテナからログアウトしましょう。
また、プロジェクトが作成したらworkspaceは停止していいので停止しておきましょう。
ターミナルで実行
exit # workspaceからログアウト
docker-compose stop # workspaceコンテナ停止
次に作成したLaravelプロジェクトをワークスペースのルートに変更しておきます。
これでLarabelプロジェクトフォルダがドキュメントルートになり動作確認できるようになります。
docker-composer.yml
### Laravel Application Code Container ######################
volumes_source:
image: tianon/true
volumes:
//////////////// ▼▼ 修正 ▼▼ ////////////////
- ../laraveltest:/var/www/laravel
//////////////// ▲▲ 修正 ▲▲ ////////////////
また、nginxのポートもデフォルトで80になっているので、バッティングしないように任意にポートを変更しておきましょう。
docker-composer.yml
### Nginx Server Container ##################################
nginx:
build:
context: ./nginx
args:
- PHP_UPSTREAM=php-fpm
volumes_from:
- volumes_source
volumes:
- ./logs/nginx/:/var/log/nginx
ports:
//////////////// ▼▼ 修正 ▼▼ ////////////////
- "8080:80" # 8080ポートでアクセスするよう変更
//////////////// ▲▲ 修正 ▲▲ ////////////////
- "443:443"
links:
- php-fpm
次にWebサーバであるNginxとphp-fpm、Mysqlのコンテナを起動しましょう。
ターミナルで実行
docker-compose up -d php-fpm nginx mysql
初回のコンテナ起動はコンテナイメージをダウンロードしてくるので少々時間がかかります。
しかし、一度コンテナイメージをダウンロードしたら起動がとても早いです。
Vagrantとは比べ物にならないと思います。
これでLarabelがブラウザで起動していると思います。下記URLで確認してみましょう。
下図のようにLarabelのスタートページが表示されればOKです。
このようにDockerを使うと使い捨ての環境が素早く構築できますのでおすすめです。
Larabelのセミナー開催しています。ご興味あるかたはお気軽に参加ください。