owned mediaウェブ制作に役立つコンテンツを発信中!

Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#2:Laravelのインストール

最終更新日: Update!!
前回記事「Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#1:Docker環境構築」では、Dcokerを使ってローカルに開発環境を構築するところまでを進めていきました。今回は構築した環境にLaravelをインストールしてアプリケーションのデモ画面が表示されるところまでをまとめてみたいと思います。LaravelはPHPで作成されたウェブアプリケーションのフレームワークで、サーバー内で動作するものになります。ここではDockerのコンテナ内にインストールしていく形になります。前回記事で構築した環境を前提に進めていきます。 (これまでの記事はこちら) Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#1:Docker環境構築    
1. Laravel本体のインストール
まずはLaravel本体をインストールしていきます。Dockerのコンテナ内にインストールするため、Dockerのコンテナを起動しておく必要があります。そして下記のコマンドでインストールを実行します。下記では、ドキュメントルート直下にLaravelというディレクトリを作成し、その中にアプリケーションフォルダ一式をインストールしますが、その辺りはプロジェクトに合わせて適宜調整してもらえればと思います。
$ docker-compose exec app composer create-project --prefer-dist laravel/laravel laravel
  Dockerの設定で、ウェブサーバーのドキュメントルートはDcokerのコンテナ内とローカル側で同期させるようにしていますので、backend/laravelディレクトリ配下にもアプリケーション一式が含まれているのが確認できます。インストール時にメモリエラーが発生することもありますが、その場合にはDocker側のPHP設定ファイルのserver/docker/php/php.iniにて、メモリ上限を調整しておくといいですね。   インストールが完了すると、Laravelのディレクトリに対してパーミッションの変更をしておきます。
$ docker-compose exec app chmod -R 777 laravel/storage laravel/bootstrap/cache
  最後に、Laravelのプロジェクトで使うアプリケーションの環境変数設定ファイルを下記のようにサンプルを複製して作成しておきます。
$ docker-compose exec app cp laravel/.env.example laravel/.env
   
2. Laravel内の.envファイルの修正
「.env」ファイルは開発環境や本番環境など環境によってアプリケーションで扱う値を切り替えることができます。今回はローカル環境用に設定をしていきます。といっても、データベース部分だけでOKですので、Dockerで使っているデータベースの情報に合わせて編集していきます。 【backend/laravel/.env】※一部抜粋
.......
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel_local
DB_USERNAME=admin
DB_PASSWORD=secret
.......
  今後、開発環境を共有する場合には「.env.example」も合わせて変更しておくと都度編集する手間が省けますので済ませておきたいですね。    
3. アプリケーションのセットアップ
初回起動時にはいくつか作業が必要になります。まずはアプリケーションのキーを発行していきます。専用のコマンドが用意されていますので、Docker側から実行していきます。そして、ファイルストレージのシンボリックリンクも作成しておきます。
$ docker-compose exec app php laravel/artisan key:generate
$ docker-compose exec app php laravel/artisan storage:link
  ウェブアプリケーションではデータベースを使われることも多いので、マイグレーションも問題なく実行できる必要があります。下記のコマンドでマイグレーションとシーダーを実行します。シーダーはテストデータをデータベースに入れる処理になりますので、すでにデータが入っている場合には注意が必要です。
$ docker-compose exec app php laravel/artisan migrate:fresh --seed
  ここまで出来れば実際にローカルサーバーにアクセスして、アプリケーションのトップページが表示されるかチェックします。 http://localhost:8000/laravel/public/   今回はドキュメントルート直下にアプリケーション用のディレクトリを作成する形になっていますので、現状ではアプリケーションのルートが上記のようになっていますが、これを変更していく必要がありますので、次のところで詳しくみていきます。    
4. アプリケーションのルートディレクトリ変更
まずは、「backend/laravel/public」ディレクトリを「backend/public」にそのまま移動して置き換えます。そして、publicディレクトリ配下にあるindex.phpに含まれる下記の部分のパスを変更します。 【backend/public/index.php】※一部抜粋
// 変更前
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
  require $maintenance;
}
↓
// 変更後
if (file_exists($maintenance = __DIR__.'/../laravel/storage/framework/maintenance.php')) {
  require $maintenance;
}

.....

// 変更前
require __DIR__.'/../vendor/autoload.php';
↓
// 変更後
require __DIR__.'/../laravel/vendor/autoload.php';

.....

// 変更前
$app = require_once __DIR__.'/../bootstrap/app.php';
↓
// 変更後
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
  続いてbackendディレクトリ直下にindex.phpを作成し、下記のコードを入れてpublicディレクトリ直下のindex.phpを読み込むようにします。 【backend/index.php】
<?php
  require_once(__DIR__.'/public/index.php');
  最後に、変更後のURLでアプリケーションのトップページにアクセスして問題なく表示されるかチェックします。 http://localhost:8000/   これでDockerのローカル環境へLaravelのインストールが完了し、開発を進める準備ができました。これまでの流れではコマンドを適宜実行していましたが、次はこの辺りをもう少し簡潔にしていきたい思います。    
5. Makefileの作成
Dockerのコンテナ起動やマイグレーションなど、開発でよく使うコマンドには長いものがあるので、それらを「Makefile」で登録することで、「makeコマンド」で実行することができます。下記のようにわかりやすい名前でキーを用意してコマンドを紐づけておきます。 【server/Makefile】
create:
  docker-compose build --no-cache --force-rm
  docker-compose up -d
  docker-compose exec app composer create-project --prefer-dist laravel/laravel laravel
  docker-compose exec app chmod -R 777 laravel/storage laravel/bootstrap/cache
  docker-compose exec app cp laravel/.env.example laravel/.env

setup: 
  docker-compose exec app php laravel/artisan key:generate
  docker-compose exec app php laravel/artisan storage:link

build:
  docker-compose down
  docker-compose build --no-cache --force-rm
  docker-compose up -d

up:
  docker-compose up -d

stop:
  docker-compose stop

down:
  docker-compose down

destroy:
  docker-compose down --rmi all --volumes --remove-orphans

install:
  docker-compose exec app composer install

update:
  docker-compose exec app composer update

migrate:
  docker-compose exec app php laravel/artisan migrate

fresh:
  docker-compose exec app php laravel/artisan migrate:fresh --seed

seed:
  docker-compose exec app php laravel/artisan db:seed

optimize:
  docker-compose exec app php laravel/artisan optimize
  docker-compose exec app php laravel/artisan route:cache

tinker:
  docker-compose exec app php laravel/artisan tinker

db:
  docker-compose exec db bash -c 'mysql -u admin -psecret'
  Makefileで登録したコマンドは、下記のようにmakeコマンドとして実行することができます。上記は一例ですので、他にもよく使うコマンドがあれば適宜登録しておくと便利ですね。
$ cd server
$ make up
 
  これでDockerのローカル環境でLaravelが使えるようになりました。開発環境の構築としてはここまでですが、この後は実際にアプリケーションの開発を進めていく形になります。その辺りはまた次回記事でまとめていきたいと思います。   (こちらの記事も合わせてどうぞ) Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#1:Docker環境構築
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram