laradockで簡単Laravel開発環境構築

1ヶ月に1回のPostが聞いて呆れるくらい何もしませんでした。

が、先程Qiitaに投稿したので、同じものを投稿するというお手軽な方法で新投稿しておきます。

今回はlaradockでLaravel環境を構築してみます。

homesteadは以前使っていたのですが、laradockなんてのがあったのを最近知りました。

せっかくなんで試してみます。

開発環境

OS X Yosemite 10.10.5

事前準備

必要なもの

作業用ディレクトリ作成

$ mkdir sample-project
$ cd sample-project

laravelのダウンロード

$ composer create-project laravel/laravel project

構築

公式のとおりに作ってみます。

1. laradockダウンロード

$ git clone https://github.com/Laradock/laradock.git
$ cd laradock

2. dotenvファイル作成

$ cp env-example .env

設定を変更したい場合は作成した .env ファイルを修正しましょう。

今回はアプリケーションパスと、MySQL・Nginxの設定を変更するようにしてみます。

アプリケーションパスの変更

### Application Path
# Point to your application code, will be available at `/var/www`.

APPLICATION=../project

MySQLの設定変更

### MYSQL ##############################################################################################################

MYSQL_VERSION=5.7
MYSQL_DATABASE=sample_database
MYSQL_USER=sample_user
MYSQL_PASSWORD=sample_password_12345

Nginxの設定変更

NGINX_HOST_HTTP_PORT=8888

ローカルで確認したい場合は↑の情報を変えないと接続確認できません。

3. docker-compose実行

では、公式に書いてある nginx mysql redis beanstalkd を起動してみます。

ついでに確認のため phpmyadminも起動しておきます。

$ docker-compose up -d nginx mysql redis beanstalkd phpmyadmin

↑を実行すると、パラパラとダウンロードしてビルドしてと頑張ってやってくれます。

終了したら、きちんと起動しているか確認してみましょう。

$ docker-compose ps
         Name                        Command               State                      Ports                    
--------------------------------------------------------------------------------------------------------------
laradock_applications_1   /true                            Exit 0                                              
laradock_beanstalkd_1     /usr/bin/beanstalkd              Up       0.0.0.0:11300->11300/tcp                   
laradock_mysql_1          docker-entrypoint.sh mysqld      Up       0.0.0.0:3306->3306/tcp                     
laradock_nginx_1          nginx                            Up       0.0.0.0:443->443/tcp, 0.0.0.0:8888->80/tcp 
laradock_php-fpm_1        docker-php-entrypoint php-fpm    Up       9000/tcp                                   
laradock_phpmyadmin_1     /run.sh phpmyadmin               Up       0.0.0.0:8080->80/tcp                       
laradock_redis_1          docker-entrypoint.sh redis ...   Up       0.0.0.0:6379->6379/tcp                     
laradock_workspace_1      /sbin/my_init                    Up       0.0.0.0:2222->22/tcp                    

無事起動してますね。

4. laravel側の設定

dotenvファイルの修正

接続を確立するため、MySQL、Redis、Beanstalkdの設定をlaradockで設定したものに合わせましょう。

DB_HOST=laradock_mysql_1
DB_DATABASE=sample_database
DB_USERNAME=sample_user
DB_PASSWORD= sample_password_12345

REDIS_HOST=laradock_redis_1

QUEUE_DRIVER=beanstalkd
QUEUE_HOST=laradock_beanstalkd_1

接続確認

nginx確認

http://localhost:8888にアクセスしてみましょう。

f:id:kojirooooocks:20170727164624p:plain

問題なくアクセスできてます。

Mysql確認

接続設定が正しければmigrateコマンドを実行して、successfully になるはずです。

$ docker exec -it laradock_workspace_1 php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table

早速phpmyadminで確認してみます。

f:id:kojirooooocks:20170727164636p:plain

migrationで実行されたテーブルが作成されています。

Redis確認

phpmyadmin的な便利なものはlaradockにはないようなので、泥臭く確認してみます。

laravel公式を参考にしながらやっていきます。

1. predisをインストー

$ docker exec -it laradock_workspace_1 composer require predis/predis

2. config/database.php を修正

redis の項目に以下を追記します。

'client' => 'predis',

3. app/Http/routes.php を修正

以下を追加します。

// Setテスト 
Route::get('/redis_test/set', function() {
    $result = Illuminate\Support\Facades\Redis::set("test", "redisの接続テストです。");
    dd($result);
});

// Getテスト
Route::get('/redis_test/get', function() {
    $result = Illuminate\Support\Facades\Redis::get("test");
    dd($result);
});

4. Setできるかのテスト

http://localhost:8888/redis_test/set に接続します。

接続が問題なければ以下のような表示になります。

f:id:kojirooooocks:20170727164728p:plain

5. Getできるかのテスト

http://localhost:8888/redis_test/get に接続します。

接続が問題なければ以下のような表示になります。

f:id:kojirooooocks:20170727164735p:plain

単純なSet/Getですが、問題なくできることを確認できました。

Beanstalkd確認

こちらもRedis同様、公式ドキュメントを見ながら泥臭く確認してみます。

1. 依存パッケージのインストー

$ docker exec -it laradock_workspace_1 composer require pda/pheanstalk

2. config/queue.phpを修正

connections => beanstalkd => host の値を以下に修正します。

'host' => env('QUEUE_HOST', 'localhost'),

3. Jobクラスを作成

$ docker exec -it laradock_workspace_1 php artisan make:job Test

4. app/Http/routes.php を修正

以下を追加します。

// QueueSetテスト
Route::get('/queue_test/set', function() {
    $result = dispatch(new App\Jobs\Test());
    dd($result);
});

5. listen状態にして監視

以下のコマンドでqueue監視状態にしておく

$ docker exec -it laradock_workspace_1 php artisan queue:listen

6. ブラウザで接続

http://localhost:8888/queue_test/set に接続します。

接続が問題なければ以下のような表示になります。

f:id:kojirooooocks:20170727164739p:plain

監視しているターミナル上にも以下のような表示が現れていると思います。

$ docker exec -it laradock_workspace_1 php artisan queue:listen
[2017-07-27 16:29:34] Processed: App\Jobs\Test

これですべての確認ができました。

やってみた感想

homesteadと同じく、簡単に開発環境を構築することが出来ました。

predisやpheanstalkなど使用するコンテナで依存しているパッケージも一緒にインストールできれば嬉しいですね。

というか僕がやり方知らないだけかもしれないので、もし知っていれば教えてください。

という、Qiita投稿まんまコピーで終わらせました。

次の投稿はなんとか8月中にやってみたいとおもいます。

期待している人はいないだろうけど、期待しないで待っててください。