※ Qiitaに登録していたものとおんなじ内容だったので、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にアクセスしてみましょう。
問題なくアクセスできてます。
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で確認してみます。
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 に接続します。
接続が問題なければ以下のような表示になります。
5. Getできるかのテスト
http://localhost:8888/redis_test/get に接続します。
接続が問題なければ以下のような表示になります。
単純な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 に接続します。
接続が問題なければ以下のような表示になります。
監視しているターミナル上にも以下のような表示が現れていると思います。
$ 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月中にやってみたいとおもいます。
期待している人はいないだろうけど、期待しないで待っててください。