私は業務でほとんど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)
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
:コンテナ名を記載。-
build
:context
に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の設定が表示されました!
最後に
業務でDockerを使用していないため今まで触れる機会がなかったですが、 早くて簡単に環境構築を体験できて楽しかったです!
今回は基礎の基礎だったのでDockerの深いところも学習していきたいと思います。