DockerでLaravelの開発環境を構築する(更新:2017/07/03)


はじめに

Laradock - official
Laravel使った開発にLaradockを使うというのはどうだろう
を参考にLaravelの開発環境を構築してみます。
Qiitaの記事は非常にわかりやすいのですが、バージョンの問題なのか一部現在の公式と異なる部分がありましたので公式優先で行きます。

また、@y_tsubukuが開発するyaritori - メール共有システムも、良ければご覧ください

追記) エンジニアの募集もはじめました!!

環境

Laradockをcloneする

まずはapplicationのルートディレクトリを作成しましょう。
今回はappとしました。そこでLaradockをcloneします。
LaradockにはDockerfileやComposeのymlファイルが含まれています。

$ mkdir app
$ cd app
$ git clone https://github.com/LaraDock/laradock.git

また、この時点でenvファイルもコピーしておきます。

$ cd laradock
$ cp env-example .env

簡単!

コンテナを起動する

$ docker-compose up -d nginx mysql redis beanstalkd

一発目はimageを落としてきたりするので、かなり時間が掛かります

完了したらステータスを確認しましょう。

laradock $docker-compose ps
         Name                        Command                State                      Ports                   
--------------------------------------------------------------------------------------------------------------
laradock_applications_1   /true                            Exit 0                                              
laradock_beanstalkd_1     /usr/bin/beanstalkd              Exit 137                                            
laradock_mysql_1          docker-entrypoint.sh mysqld      Exit 0                                              
laradock_nginx_1          nginx                            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_redis_1          docker-entrypoint.sh redis ...   Exit 0                                              
laradock_workspace_1      /sbin/my_init                    Up         0.0.0.0:2222->22/tcp 

いい感じ!

ここで.envにも情報を追加してあげます。

.env
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

ここで公式では

と記載されてますが、実際にアクセスしてみると…

:((((

まだenjoyさせてくれないようなので、次はLaravelのプロジェクトを作成してみます。

Laravelのプロジェクトを作成する

composerを使用してLaravelのプロジェクトを作成しますが、
コンテナに予めcomposerが入っているので、そちらを利用しましょう

ワークスペース(コンテナ)へログイン

docker exec -it {ログイン先のNAMES} /bin/bashでログインします。
今回は、laradock_workspace_1にログインするため、以下のようになります。

$ docker exec -it laradock_workspace_1 /bin/bash

Laravelプロジェクトを作成

composer create-project laravel/laravel {アプリケーション名}で作成します。
今回はtestappという名前にしました。

# composer create-project laravel/laravel testapp

データボリュームを変更する

これだけではまだ動きませんので、データボリュームを変更して動くようにします。

一旦、コンテナを停止します。

$ docker-compose stop

docker-compose.ymlを書き換えて、ホストのtestappディレクトリが/var/www直下にマウントされるようにします。

docker-compose.yml
     applications:
       image: tianon/true
       volumes:
-        - ${APPLICATION}:/var/www
+        - ${APPLICATION}/testapp:/var/www

再度、コンテナを起動します。

$ docker-compose up -d nginx mysql redis beanstalkd

ブラウザで確認する

早速、アクセスしてみましょう。

:)))))

ようやくenjoyできました。あとはザクザク開発していきましょう。

バージョンを確認する

PHP

# php -v
PHP 7.1.4-1+deb.sury.org~xenial+1 (cli) (built: Apr 11 2017 22:12:32) ( NTS )

Laravel

# php artisan --version
Laravel Framework 5.4.24

終わりに

とりあえず、ゼロからLaravelの開発環境を整えるまでできました。
実際に開発をすすめる中で「これ必要やん」みたいなのがあったら随時足していこうと思います。