HOME > Web > Docker for Macを使ってサクッとLaravel環境を構築する

Docker for Macを使ってサクッとLaravel環境を構築する

3829ff00375e286e78694a520c968c48

今回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をダウンロードします。

c7ce1dba339c054e133ef241b7ba4304

Docker.dmgをダブルクリックします。

a4d0a601439c20c8a2f9505e2c41c8f4

DockerのアプリフォルダをApplicationsフォルダに移動します。これでDocker for Macのインストールは完了です。

dc630d38400ae4af669d0caf8328ae7c

ApplicationsフォルダからDockerをダブルクリックして起動してください。

2181869ed03dd071b195ae3d4dcc4542

初回起動時は下記の画面が表示されます。Nextをクリックします。

646238f5a7eb7dbc700df865b060a851

Docker for Macの起動には管理者権限が必要という事です。OKボタンをクリックして管理者のパスワードを入力します。

ea4060e61ca699da4113d0382639d9ea

d0fb046b5d3c798a9b197ddc2bcd1300

パスワード入力してOKをクリックするとステータスバーにDockerのアイコンが追加され下図のポップアップが表示されます。 Got it!ボタンを押して閉じましょう。

c78ddd4f534f6106c4cbea17decaaead

ちなみにステータスバーのDockerのアイコンをクリックすると各種設定を行えます。 Dockerの起動状態や、停止など行えます。

2b4f375bd34fd78c1bac65188f28128b

これでDockerを使うための下記のツールがインストールされた状態です。

名前説明
dockerDockerの実行環境そのもの
docker-compose複数のコンテナを利用して一つのサービスを提供する場合に YAML 一発で構築出来るようにするツール
docker-machinedockerをバーチャルホストや Mac、Windows でも使えるようにしてくれるもの

ターミナルを開いて実際にインストールされたか確認してみましょう。

ターミナルで実行

docker --version
docker-compose --version
docker-machine --version

下図のようにバージョン情報が確認できれば正常にインストールできています。

0be9f14a8ffadeca93f6a0f8b1a85ecd

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

初回は時間がかかりますが気長に待ちましょう。 下図のように表示されれば作成完了です。

ba4795e0a2bf7761022453717d3afc73

コンテナが起動したら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とは比べ物にならないと思います。

1a6474f7087bcfe5772938cac194ad7b

これでLarabelがブラウザで起動していると思います。下記URLで確認してみましょう。

http://localhost:8080

下図のようにLarabelのスタートページが表示されればOKです。

cc7148338c320d46cbedd94bace21c63

このようにDockerを使うと使い捨ての環境が素早く構築できますのでおすすめです。

Larabelのセミナー開催しています。ご興味あるかたはお気軽に参加ください。