1. システムとオフィスの融合
  2. media
  3. Docker
  4. Docker ComposeでLaravel検証環境をサクッと立ち上げる

QESブログ

Docker ComposeでLaravel検証環境をサクッと立ち上げる

  • LINEで送る
  • このエントリーをはてなブックマークに追加
こんにちは。システムソリューション営業本部の吾妻です。 

私が所属するシステムソリューション営業本部で開発している(してきた)システムは、B to C ではなく B to B が大半を占めており、どちらかというと、華美な画面のある Windows フォームアプリケーションや、Web アプリケーションよりはCUI で操作するようなバッチ処理のシステムが多くなっています。

 リモートワークの進展、「新しい生活様式」を意識して働いていかなければならない最近の状況下で、業務を効率化するための手段として、
  • システムの所在をオンプレミスからクラウドへ移して、ユーザーがどこからでも(リモート環境からでも)操作できるようにすること
  • ユーザーインターフェースをより操作性の高いものへと改良すること
の2点に目を向ける必要があると考えます。

しかしながら、普段開発者の立場としてオンプレミス中心、CUIで操作する環境に慣れてしまっているために、ユーザーとしての立場でも、このような効率化に対する意識を持ちにくくなっていると考えます。

そこで、グラフィカルなユーザーインターフェースを有するシステムを簡単に立ち上げて、スピード感をもって開発し、使い勝手を調整・検証するための環境が、普段使い慣れていない人にも速やかに用意できると良いのではないかということで、Docker Compose で Laravel 検証環境を立ち上げる手順についてまとめることにしました。 

Laravel を利用することで、 Web アプリケーションとしてブラウザから何らかの操作を行うことも、コマンドラインインターフェイスから何らかのバッチ処理を行うこともできるシステムを構築することができます。

使用するツール

Laravel とは?


Laravel は、 PHP で Web アプリケーションを実装するために使われるフレームワークです。
PHP で書かれたフレームワークとして、 CakePHP 、 Symfony 、 Slim 、 FuelPHP などがありますが、これらと比較すると、 Laravel は、フルスタックフレームワークと呼ばれる機能豊富なタイプのフレームワークで、Web アプリケーションからデータベース(以下、 DB )へのアクセス処理や、管理画面に対する認証といった機能を自分で実装するのではなく、設定やプラグインを通して「有効化」することで、迅速に構築することができることが大きな特徴です。

また、画面出力や SQL クエリの組み立てに関しても、 Laravel に組み込まれた機能を利用することができるので、脆弱性が混入するのを防ぎ、セキュリティリスクの低減を図ることができます。

Laravel は GitHub 上でオープンソースソフトウェアとして開発が進められており、更新頻度が高く、モダンな機能が次々に追加されています。

例えば、直近のメジャーバージョンアップデートである Laravel 8 だと、新しめの CSS フレームワークである Tailwind CSS を利用して、認証画面などを生成してくれる機能が追加されています。

Docker とは?


Docker は、コンテナ型の仮想化技術によって、1台のコンピューター上で複数のサーバーを動かすためのソフトウェアです。

また、 Docker Desktop をインストールすると同梱されている Docker Compose は、複数の Docker コンテナをまとめて管理するためのソフトウェアです。

本記事では、
  1.  HTTP リクエストを受け付けるプロキシサーバー
  2.  PHP や Laravel を動かすアプリケーションサーバー
  3.  DB サーバー
  4.  phpMyAdmin ( DB サーバーを管理するため)
の 4 種類のサーバーをまとめて 1 か所で動かすために、Docker および Docker Compose を使用します。

Laradock を利用しない理由


Docker を利用して Laravel の開発 / 検証を行う環境を構築する時に

よく利用されるツールとして、 Laradock というものがあります。

Docker の知識が浅くても、 Laravel 環境を立ち上げられるメリットがあります。


しかしながら、当初 Laravel を Docker で動かすためのツールだった Laradock は、

バージョンを重ねるにつれて、対応アプリケーションが増え、

設定ファイル ( docker-compose.yml ) も肥大化し、

単に Laravel のみを動かすために使うのは過剰なものになってしまいました。


本記事のように、使用するサービスの数が少ない場合には、

自分で一から docker-compose.yml を書いた方が、無駄が少なく、

トラブルが起きた際の原因究明も行いやすくなります。


環境構築

構成図

本記事の手順を実行すると、以下の図のようなサービス一式が構築されます。


lara01.png

一般ユーザーも管理者ユーザーも、Nginxを経由して、Laravelにアクセスします。
Laravelでは、裏側でMySQLに対するDBアクセスが実行されるので、保守用にphpMyAdminを用意し、バックアップやエクスポートなどのデータ管理を行ったり、デバッグしたりするために使用します。

手順

①以下のコマンドを実行して、ローカルにリポジトリを複製します。

  https://github.com/qesblog/laravel-on-docker-containers にアクセスして内容を確認できます。
$ git clone https://github.com/qesblog/laravel-on-docker-containers
② laravel-on-docker-containers ディレクトリに移動します。
$ cd laravel-on-docker-containers
③Dockerfile や docker-compose.yml に記載されている設定項目を、適宜修正します(修正しなくても最低限動かすことはできます)。

以下の値を設定値として埋め込んでいるので、これらをVS Codeなどのテキストエディタで検索・一括置換すると楽です。

設定項目 埋め込まれている定数値 備考
MYSQL_ROOT_PASSWORD ROOTPASSWORD DBコンテナで動作するMySQLのrootパスワード
DB_DATABASE DATABASENAME DB名
DB_USERNAME USERNAME LaravelからMySQLにアクセスする際のユーザー名
DB_PASSWORD USERPASSWORD LaravelからMySQLにアクセスする際のパスワード
APP_URL http:\/\/example.com/ Laravelが動作しているURL

 

  ※定数値は sed コマンドの引数に渡すため、必要に応じてエスケープしておく必要があります。

④ host.sh を実行します。

$ bash ./host.sh


スクリプトファイル host.sh には、以下の様な処理が実行されるようにコマンドが記載されています。

  • Docker コンテナをビルド・起動
  • Docker コンテナの中に入り設定値を置換・ DB をマイグレート

⑤ブラウザを開いて、 Laravel にアクセスします。

アクセスするドメインや IP アドレスは、環境により異なりますが、Docker を動かしているホストマシン自体で localhost にアクセスするのが一番お手軽です。

 ( https ではなく http なので、 Chrome などを使っている場合は勝手に補完されないように注意が必要です)

 見慣れたLaravelのWelcomeページが表示されたら完成です。


lara8.png

まとめ

本記事では、Docker Compose を利用することによって、 Laravel 検証環境を速やかに立ち上げる手順について簡単にご紹介しました。

今回は、まだ Laravel 本体がインストールされたばかりの状態で、画面やデータ、 Dockerfile の内容については一切触れていませんが、次回の記事「Docker Composeで立ち上げたLaravelを Voyagerでカスタマイズする」では、 Laravel をカスタマイズして具体的な Web アプリケーションとしていく方法について、ご紹介できればと考えています。





このブログで参照されている、 Git は、米国およびその他の国における Software Freedom Conservancy, Inc. の商標または登録商標です。

このブログで参照されている、 GitHub は、米国およびその他の国における GitHub Inc. の商標または登録商標です。

このブログで参照されている、DockerおよびDocker Composeは、米国およびその他の国における Docker Inc. の商標または登録商標です。

このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

お気軽にお問い合わせください。

ページのトップへ