私は業務でほとんどDockerに触れないので、Dockerを使ってPHPを実行する方法を簡単にまとめてみました。

Dockerとは

ChatGPTに聞いてみると、

Dockerは、コンテナ仮想化を利用してアプリケーションを開発、配布、実行するためのプラットフォームです。
Dockerを使用することで、アプリケーションとその依存関係をコンテナと呼ばれる軽量で独立した実行環境にパッケージ化し、異なる環境間で一貫性のある動作を実現できます。

だそうです。

噛み砕くと、 PCの中に独立したOS(コンテナ)を作り環境を構築し、いつでもその環境を立ち上げて使える便利なもの ということかなと思っています。

コンテナ自体をアプリケーションと同じ単位で管理するため面倒な処理が必要なくPC側からも人間側からも便利なツールで、

他にも、同じチームメンバーに「環境(Dockerイメージ)」を共有する機能や GitHubみたいに環境(Dockerイメージ)を共有しておける場所(Docker Hub)や Composerみたいに複数のコンテナを一度に操作できるもの(Docker Compose)などもあり便利です。

Dockerに関する用語

Dockerを調べていく上で、最低限理解しておいた方がいい用語を噛み砕いてまとめておきます。

Dockerコンテナ🗃

Docker上で動作する仮想環境のことで、

簡単にいうと、PCの中に複数作成できてまたそれがそれぞれが独立して稼働させることができる仮想マシンのようなものです。

Dockerイメージ🗂

コンテナの情報が格納されているファイルのことで、

コンテナのもととなる情報で、コンテナの作成にはDockerイメージが必要になります。

Dockerfile 📂

Dockerイメージを作成するためのファイルのことで、

Dockerのもととなる情報で、Dockerイメージの作成にはDockerfileが必要になります。

Docker Hub

GitHubのDockerバージョンみたいなもので、Dockerイメージが公開されている場所です。

Docker Compose

PHPで使用するパッケージバージョン管理ツールComposerのDockerバージョンみたいなもので、 yamlファイルに各コンテナに対する設定をあらかじめ定義しておくことで、DockerHubから複数のDockerイメージが取得でき効率的に操作できます。

Dockerを使ってPHPを実行する

ここからタイトルの内容に入っていきます。

まず手順としては、

1. Dockerをインストール

2. 最低限必要なディレクトリ・ファイルの作成

3. コンテナの起動

の順にやっていきます。

1. Dockerをインストール

インストール方法

公式サイトやHomebrewでもインストールできます。

今回は公式サイトからインストールします。 インストール後、起動すると画面上部にクジラマークが表示されると完了です。(ターミナルで$ docker -vでバージョン確認でもOK) image.png

2. 最低限必要なディレクトリ・ファイルの作成

階層は下記の通りです。

.
├── compose.yml
└── php
    ├── Dockerfile
    └── index.php

各ファイルの記述内容は下記の通りです。

compose.yml

Docker Composeの設定ファイル

version: '3'
services:
  php_service:
    container_name: php_container
    build:
      context: './php/'
    volumes:
      - './php:/var/www/html'
    ports:
      - '80:80'

  • version:Docker Composeのバージョンを指定。

  • services:Docker Composeで動作させるサービス名を記載。

  • php_service:サービス名を記載。

    • container_name:コンテナ名を記載。
    • buildcontextにDockerfileのパスを指定。

      (ここでimage: image名を設定することも可能)

    • volumes:どのディレクトリをコンテナ内の/var/www/htmlディレクトリにマウントするか指定。
    • ports:ホスト側のポートとコンテナ側のポートを指定。

php/Dockerfile

Docker Hub内の公式のPHPイメージの指定します。

FROM php:8.3-apache

php/index.php

今回はphpinfoを表示させるため以下を記述します。

<?php
phpinfo();

3. コンテナの起動

あとは起動コマンドを実行するのみです。

$ docker-compose up

ブラウザでhttp://localhost/ にアクセスしてみると、 index.phpの中身のphpinfo():PHPの設定が表示されました! image.png

最後に

業務でDockerを使用していないため今まで触れる機会がなかったですが、 早くて簡単に環境構築を体験できて楽しかったです!

今回は基礎の基礎だったのでDockerの深いところも学習していきたいと思います。