カテゴリ: Laravel 更新日: 2026/08/29

LaravelとPostgreSQLをDockerで使う方法!初心者でもわかる環境構築ガイド

LaravelとPostgreSQLをDockerで使う方法
LaravelとPostgreSQLをDockerで使う方法

先生と生徒の会話形式で理解しよう

生徒

「Laravelでデータベースを使いたいのですが、PostgreSQLってどうやって使うんですか?」

先生

「Dockerを使えば、パソコンに直接インストールしなくても簡単にPostgreSQLを使えます。」

生徒

「Dockerって難しそうです…初心者でもできますか?」

先生

「大丈夫です。順番に設定すれば、誰でもLaravelとPostgreSQLを連携できます。」

生徒

「ぜひやり方を教えてください!」

先生

「それでは、Dockerを使ったLaravelとPostgreSQLの環境構築を見ていきましょう。」

1. LaravelとPostgreSQLとDockerとは?

1. LaravelとPostgreSQLとDockerとは?
1. LaravelとPostgreSQLとDockerとは?

まずは基本から説明します。Laravelは、PHPで作られた人気のWebアプリケーションフレームワークです。ブログやECサイトなどを効率よく作ることができます。

PostgreSQLは、データを保存するためのデータベースです。ユーザー情報や投稿内容などを管理します。データベースとは、情報を整理して保管する箱のようなものです。

Dockerは、アプリケーションを動かすための環境を箱のようにまとめる仕組みです。パソコンに直接インストールしなくても、同じ環境を再現できるのが特徴です。

つまり、Dockerを使うことでLaravelとPostgreSQLを簡単にセットで動かせるようになります。

2. Dockerで開発環境を作る理由

2. Dockerで開発環境を作る理由
2. Dockerで開発環境を作る理由

初心者がつまずきやすいのが環境構築です。ソフトのバージョン違いや設定ミスで動かないことが多くあります。

Dockerを使うと、あらかじめ設定された環境をそのまま使えるため、トラブルを減らせます。また、チーム開発でも同じ環境を共有できるので便利です。

例えるなら、料理のレシピと材料が全部セットになっている状態です。誰が作っても同じ味になります。

3. docker-compose.ymlの作成

3. docker-compose.ymlの作成
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設定

4. Laravelの.env設定
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. コンテナの起動方法

5. コンテナの起動方法
5. コンテナの起動方法

設定が終わったら、Dockerを起動します。ターミナルで以下のコマンドを実行します。


docker-compose up -d

このコマンドは、バックグラウンドでコンテナを起動するという意味です。コンテナとは、アプリが動く小さな環境のことです。

正常に起動すると、LaravelとPostgreSQLが同時に動きます。

6. マイグレーションでテーブル作成

6. マイグレーションでテーブル作成
6. マイグレーションでテーブル作成

Laravelでは、マイグレーションという仕組みでデータベースのテーブルを作成します。テーブルとは、データを整理して保存する表のようなものです。


php artisan migrate

このコマンドを実行すると、usersテーブルなどがPostgreSQLに作成されます。これでデータを保存できるようになります。

7. データ保存の簡単な例

7. データ保存の簡単な例
7. データ保存の簡単な例

実際にデータを保存する例を見てみましょう。Laravelのモデルを使うと簡単にデータ操作ができます。


use App\Models\User;

Route::get('/create', function () {
  User::create([
    'name' => 'Taro',
    'email' => 'taro@example.com',
    'password' => bcrypt('password')
  ]);
});

このコードを実行すると、PostgreSQLにデータが保存されます。bcryptはパスワードを安全に変換する仕組みです。

8. よくあるエラーと対処方法

8. よくあるエラーと対処方法
8. よくあるエラーと対処方法

初心者がよく遭遇するエラーをいくつか紹介します。

接続できない場合は、DB_HOSTが正しいか確認してください。Dockerではlocalhostではなくサービス名を使います。

また、ポート番号が違うと接続できません。5432がPostgreSQLの標準ポートです。

さらに、コンテナが起動していない場合もあります。その場合はdocker-compose psで状態を確認しましょう。

9. データの永続化について

9. データの永続化について
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の基礎は、今後の開発の土台になります。しっかり復習しながらステップアップしていきましょう。」

カテゴリの一覧へ
新着記事
New1
PHP
PHPで日本語の曜日を表示する方法を解説!配列を使った曜日変換の定番コード
New2
Symfony
Symfonyでバリデーションエラーを表示する方法!初心者でもわかるテンプレート活用術
New3
Laravel
Laravelのマイグレーションエラーの原因と解決方法を完全ガイド
New4
Laravel
Laravelのrefreshとfreshの違いを初心者でもわかる解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravel通知機能の決定版!特定のユーザーにのみ通知を送る認可制御を初心者向けに徹底解説
No.3
Java&Spring記事人気No3
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.4
Java&Spring記事人気No4
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのエラー画面をカスタマイズする方法!errors/xxx.blade.phpの使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Laravel
Laravelメール送信ログの保存と確認方法を完全解説!Mail::fakeとログ出力の使い方