dockerで開発環境を構築する(PHP+PostgeSQL+PgAdmin)

dockerでPHP+PostgeSQL+PgAdminの開発環境を構築する手順です。

まだdocker環境がない人は、Windowsでdockerで開発環境を構築する(PHP+MySQL+PHPMyAdmin)の1,2を参照してdocker環境を構築してください。

1. 環境(コンテナ)構築用ファイルの作成(PHP+PostgeSQL+PgAdmin)

手順としてはWindowsでdockerで開発環境を構築する(PHP+MySQL+PHPMyAdmin)の3以降と同じですが、環境が異なる(MySQL→PostgeSQL、PHPMyAdmin→PgAdmin)のでそれに対応する構成ファイルを用意します。

C:\Users\{ユーザー名}\DEV\{Project名}PCの保存先なのでわかりやすい場所でOK
src/PHP/JS/HTMLなど
docker/
    │     ├ docker-compose.yml
    │     └ php/
    │         └ Dockerfile
db_init/
init.sqlDB初期化必要に応じて

Dockerfileの位置が違うとかphp.iniがないとか若干異なりますがそこはスルー(汗)

1.1 Dockerfileの作成

以下のような内容でdocker/php/Dockerfileを作成。

今回はPHP8.2とMySQLをインストールする

FROM php:8.2-apache

# PostgreSQL 拡張インストール
RUN apt-get update && \
    apt-get install -y libpq-dev && \
    docker-php-ext-install pdo pdo_pgsql pgsql

# Apache mod_rewrite
RUN a2enmod rewrite 



1.2 docker-compose.ymlの作成

以下のような内容でdocker/docker-compose.ymlを作成。

container_nameやID、パスワードなどは必要に応じて変更。
webとPgAdminのポートは、PHP+MySQL+PHPMyAdminの環境と被らないように8082と8086に変更している(同時に起動しないなら変更する必要はない)

今回はpostgresのバージョンを運用環境と同じ17.5に指定している。

version: '3.8'

services:
  web:
    build: ./php
    container_name: dev_php
    volumes:
      - ../src:/var/www/html
    ports:
      - "8082:80"
    depends_on:
      - db

  db:
    image: postgres:17.5
    container_name: dev_postgres
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: apppass
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ../db_init:/docker-entrypoint-initdb.d
    ports:
      - "5432:5432"

  pgadmin:
    image: dpage/pgadmin4
    container_name: dev_pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: adminpass
    ports:
      - "8086:80"
    depends_on:
      - db

volumes:
  postgres_data:








3.3 init.sqlの作成

既存のDBデータを持ってきて使う場合は、ダンプしたデータをinit.sqlとして置いておくが、ダンプ時は以下のように不要なオプションを付けずにダンプを実行する

pg_dump -U postgres -d 対象DB名 > init.sql

4 環境構築

PowerShellでdockerフォルダに移動し、docker composeで環境を起動する(PHP+MySQL+PHPMyAdminと同じ)

cd C:\Users\{ユーザー名}\DEV\project名\docker
docker-compose up -d

初回は必要なコンポーネントをダウンロードするので時間が掛かる