【Docker】PHP環境の構築

ヤマモト

2024.09.17

23

こんにちは、山本です。


今回はDockerでPHPの環境の構築を行いました。

Docker

Dockerとは

Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム。


メリット

Dockerコンテナはコード化されたファイルを共有することで、ローカル環境と本番環境の違いをなくし、一貫した動作の環境のもと開発を行うことができる。

Dockerはミドルウェアのインストールや各種環境設定をコード化して管理できる。


DockerによるPHP環境の構築

(前提)Docker のインストール

下記リンクからインストール可能(MacとWindowsでインストーラが変わるため注意)

https://www.docker.com/get-started/


ディレクトリの作成

任意の場所にディレクトリを作成する。


mkdir php-docker

cd php-docker


(ディレクトリ構造)

php-docker/
├── Dockerfile
├── docker-compose.yml
├── index.php
└── その他のPHPファイルやディレクトリ

Dockerfileの作成

Dockerfile とは、PHPのベースイメージに対して追加のPHP拡張モジュールをインストールするためのもの。

プロジェクトディレクトリ内に Dockerfile を作成し、以下の内容を記述する。


# ベースイメージとしてPHPを使用
FROM php:7.4-apache


# 作業ディレクトリを設定
WORKDIR /var/www/html


# プロジェクトファイルをコンテナにコピー
COPY . /var/www/html


# 必要なPHP拡張モジュールをインストール
RUN docker-php-ext-install mysqli


docker-compose.ymlの作成

docker-compose.yml は、複数のDockerコンテナを一括で定義・管理するための設定ファイル。

1つのファイルで複数のコンテナを定義可能で、例えばPHPとMySQLを同時に設定でき、ローカル環境、テスト環境で同じ設定ファイルを用いることで、一貫性のある環境を提供できる。

プロジェクトディレクトリ内に docker-compose.yml を作成し、以下の内容を記述する。


version: '3.8'


services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html
    depends_on:
      - db


  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql


volumes:
  db_data:


PHPファイルの作成

例えば index.php ファイルを作成し、MySQLデータベースに接続できているかを確認するソースを記述する。


<?php
$servername = "db";
$username = "user";
$password = "password";
$dbname = "mydatabase";


// MySQLデータベースに接続
$conn = new mysqli($servername, $username, $password, $dbname);


// 接続をチェック
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>


Dockerコンテナのビルドと起動

以下のコマンドを実行して、Dockerコンテナをビルドし起動する。


docker-compose up -d


ブラウザで確認

ブラウザで http://localhost:8080 にアクセスして、PHPとMySQLが正しく連携しているか確認する。



まとめ

今回はDockerでPHPの環境の構築を行いました。

この記事をシェアする