LaravelとPostgreSQLをDockerで使う方法!初心者でもわかる環境構築ガイド
生徒
「Laravelでデータベースを使いたいのですが、PostgreSQLってどうやって使うんですか?」
先生
「Dockerを使えば、パソコンに直接インストールしなくても簡単にPostgreSQLを使えます。」
生徒
「Dockerって難しそうです…初心者でもできますか?」
先生
「大丈夫です。順番に設定すれば、誰でもLaravelとPostgreSQLを連携できます。」
生徒
「ぜひやり方を教えてください!」
先生
「それでは、Dockerを使ったLaravelとPostgreSQLの環境構築を見ていきましょう。」
1. LaravelとPostgreSQLとDockerとは?
まずは基本から説明します。Laravelは、PHPで作られた人気のWebアプリケーションフレームワークです。ブログやECサイトなどを効率よく作ることができます。
PostgreSQLは、データを保存するためのデータベースです。ユーザー情報や投稿内容などを管理します。データベースとは、情報を整理して保管する箱のようなものです。
Dockerは、アプリケーションを動かすための環境を箱のようにまとめる仕組みです。パソコンに直接インストールしなくても、同じ環境を再現できるのが特徴です。
つまり、Dockerを使うことでLaravelとPostgreSQLを簡単にセットで動かせるようになります。
2. Dockerで開発環境を作る理由
初心者がつまずきやすいのが環境構築です。ソフトのバージョン違いや設定ミスで動かないことが多くあります。
Dockerを使うと、あらかじめ設定された環境をそのまま使えるため、トラブルを減らせます。また、チーム開発でも同じ環境を共有できるので便利です。
例えるなら、料理のレシピと材料が全部セットになっている状態です。誰が作っても同じ味になります。
3. docker-compose.ymlの作成
Dockerでは、複数のサービスをまとめて管理するためにdocker-compose.ymlというファイルを使います。ここにLaravelとPostgreSQLの設定を書きます。
version: '3'
services:
app:
build: .
container_name: laravel_app
ports:
- "8000:8000"
volumes:
- .:/var/www
db:
image: postgres:14
container_name: postgres_db
environment:
POSTGRES_DB: laravel
POSTGRES_USER: user
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
ここで重要なポイントは、dbサービスでPostgreSQLを指定していることです。環境変数でデータベース名やユーザーを設定しています。
4. Laravelの.env設定
Laravel側でもデータベースの接続設定を行います。.envファイルは、アプリの設定をまとめたファイルです。
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=password
DB_HOSTにdbと書いているのは、docker-composeで定義したサービス名を使うためです。これにより、LaravelとPostgreSQLが通信できます。
5. コンテナの起動方法
設定が終わったら、Dockerを起動します。ターミナルで以下のコマンドを実行します。
docker-compose up -d
このコマンドは、バックグラウンドでコンテナを起動するという意味です。コンテナとは、アプリが動く小さな環境のことです。
正常に起動すると、LaravelとPostgreSQLが同時に動きます。
6. マイグレーションでテーブル作成
Laravelでは、マイグレーションという仕組みでデータベースのテーブルを作成します。テーブルとは、データを整理して保存する表のようなものです。
php artisan migrate
このコマンドを実行すると、usersテーブルなどがPostgreSQLに作成されます。これでデータを保存できるようになります。
7. データ保存の簡単な例
実際にデータを保存する例を見てみましょう。Laravelのモデルを使うと簡単にデータ操作ができます。
use App\Models\User;
Route::get('/create', function () {
User::create([
'name' => 'Taro',
'email' => 'taro@example.com',
'password' => bcrypt('password')
]);
});
このコードを実行すると、PostgreSQLにデータが保存されます。bcryptはパスワードを安全に変換する仕組みです。
8. よくあるエラーと対処方法
初心者がよく遭遇するエラーをいくつか紹介します。
接続できない場合は、DB_HOSTが正しいか確認してください。Dockerではlocalhostではなくサービス名を使います。
また、ポート番号が違うと接続できません。5432がPostgreSQLの標準ポートです。
さらに、コンテナが起動していない場合もあります。その場合はdocker-compose psで状態を確認しましょう。
9. データの永続化について
Dockerは便利ですが、そのままだとコンテナを削除するとデータも消えてしまいます。これを防ぐために永続化という設定を行います。
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
この設定を追加すると、データがコンテナ外に保存されるため、削除しても残ります。大切なデータを守るために必ず設定しておきましょう。
まとめ
LaravelとPostgreSQLとDockerの全体像の振り返り
今回の記事では、LaravelとPostgreSQLをDockerで構築する方法について、初心者でも理解できるように丁寧に解説してきました。Webアプリケーション開発において、Laravelは非常に人気のあるPHPフレームワークであり、効率よく開発を進めるための機能が豊富に用意されています。また、PostgreSQLは高性能かつ信頼性の高いデータベースであり、実務でも多く利用されています。
Dockerを活用することで、環境構築の難しさを大きく軽減し、LaravelとPostgreSQLを簡単に連携できるようになります。特に初心者にとっては、パソコンに直接インストールする手間が省けるだけでなく、環境差異によるトラブルを防ぐことができる点が大きなメリットです。
docker-composeによる環境構築の重要性
docker-compose.ymlを使うことで、LaravelアプリケーションとPostgreSQLデータベースを一括で管理できるようになります。これにより、開発環境の再現性が高まり、チーム開発や学習環境の共有がスムーズになります。
サービスごとに役割を分けて設定することで、アプリケーションとデータベースの連携が明確になり、トラブルシューティングもしやすくなります。特にDB_HOSTにサービス名を指定する点は重要で、Dockerネットワーク内での通信の基本となります。
Laravelの.env設定とデータベース接続
Laravelの.envファイルは、アプリケーションの設定を管理する非常に重要なファイルです。ここでPostgreSQLとの接続情報を正しく設定することで、Laravelからデータベースへのアクセスが可能になります。
接続設定が間違っていると、データベースに接続できないエラーが発生します。特に初心者はlocalhostとサービス名の違いでつまずくことが多いため、Docker環境ではサービス名を使うことをしっかり理解しておく必要があります。
マイグレーションとデータ操作の基本
Laravelのマイグレーション機能を使うことで、データベースのテーブル構造をコードで管理できます。これにより、データベースの変更履歴を管理しやすくなり、開発効率が向上します。
また、Eloquentモデルを使うことで、SQLを書かなくても簡単にデータの保存や取得ができる点もLaravelの大きな特徴です。初心者でも直感的にデータ操作ができるため、学習のハードルが低くなります。
サンプルプログラムで理解を深める
以下は、LaravelとPostgreSQLをDocker環境で連携し、データを保存する基本的なサンプルコードです。実際に動かしながら理解を深めていくことが重要です。
use App\Models\User;
Route::get('/sample-create', function () {
$user = User::create([
'name' => 'Hanako',
'email' => 'hanako@example.com',
'password' => bcrypt('secret')
]);
return 'ユーザーを登録しました';
});
上記のコードでは、Laravelのルーティング機能を使い、ブラウザからアクセスするだけでデータベースにユーザー情報を保存できる仕組みになっています。bcrypt関数を使うことで、パスワードを安全に暗号化して保存することも重要なポイントです。
実行結果の確認
ユーザーを登録しました
このように、LaravelとPostgreSQLをDockerで構築することで、初心者でも安全かつ効率的にWebアプリケーション開発を始めることができます。環境構築からデータ操作まで一連の流れを理解することで、より実践的なスキルが身につきます。
トラブル対策と今後の学習ポイント
よくあるエラーとしては、データベース接続エラーやコンテナの起動失敗などがあります。これらは設定ミスが原因であることが多いため、docker-compose.ymlや.envファイルを丁寧に確認することが大切です。
また、Dockerのログ確認やコンテナ状態のチェックコマンドを活用することで、問題の原因を特定しやすくなります。今後は、Laravelの認証機能やAPI開発、フロントエンドとの連携なども学んでいくと、より実践的な開発ができるようになります。
生徒
「LaravelとPostgreSQLをDockerで使う流れがだいぶ理解できました。環境構築って難しいイメージがありましたが、思ったよりシンプルでした。」
先生
「そうですね。Dockerを使うことで、複雑な環境構築をシンプルにできるのが大きなメリットです。特に初心者にはとても相性が良いです。」
生徒
「docker-compose.ymlと.envの設定が重要だと分かりました。ここがうまくいけば、LaravelとPostgreSQLがちゃんとつながるんですね。」
先生
「その通りです。サービス名で接続する仕組みも理解できましたね。これはDocker特有の考え方なので、しっかり覚えておきましょう。」
生徒
「マイグレーションでテーブルを作ったり、モデルでデータを保存したりするのも便利でした。SQLを書かなくてもいいのは助かります。」
先生
「Laravelの強みですね。今後は、データの取得や更新、削除なども学んでいくと、さらに理解が深まります。」
生徒
「これからはAPI開発やフロントエンドとの連携にも挑戦してみたいです。」
先生
「とても良い目標です。今回学んだLaravelとPostgreSQLとDockerの基礎は、今後の開発の土台になります。しっかり復習しながらステップアップしていきましょう。」