XAMPPとは違う?DockerでのPHP環境構築方法を解説
thumb_xamppdocker_01
XAMPPとは違う?DockerでのPHP環境構築方法を解説
アンドエンジニア編集部
2022.01.07
この記事でわかること
PHP開発環境構築方法には、XAMPP/MAMPを使ったものとDockerを使ったものがある
XAMPPを使った方法は簡単なものの、1つの端末に複数環境を作るには適していない
Dockerを使った方法は1度書き方を覚える必要があるが、環境を複製しやすく汎用性が高い

PHP開発環境をローカルマシンに構築する方法

img_xamppdocker_01

開発チームを異動になった時や、個人開発を新しく始める際、環境構築が必須になります。本記事では、PHP開発環境をローカルマシンに構築する方法「XAMPP」「MAMP」「Docker」について紹介した後、特にDockerによる構築方法を詳しく紹介します。

またXAMPPを用いた方法と比べた際の、Dockerを用いた方法のメリット・デメリットについても解説します。

XAMPPとは

XAMPP(ザンプ)とは、PHP開発によく用いられるソフトウェア一式をまとめ、一括インストールできるようにしたパッケージです。オープンソースであり、無償で利用できます。

「XAMPP」はそれぞれ下記の頭文字となっており、クロスプラットフォームであることと、揃えられる環境一覧を示しています。

X…クロスプラットフォーム(Windows、Mac両対応)

A…Apache(Webサーバ)

M…MariaDB or MySQL(DBサーバ)

P…PHP(プログラミング言語)

P…Perl(プログラミング言語)

【参考】:XAMPP

Web業界で使われるXAMPPとは?特徴やメリット、注意点を解説

MAMPとは

MAMP(マンプ)もXAMPPと同じく、PHP開発に関連するソフトウェア一式をまとめたパッケージです。有償版と無償版があります。

M…Macintosh

A…Apache(Webサーバ)

M… MySQL(DBサーバ)

P…PHP(プログラミング言語)

元々Mac端末向けに製作されたため、”Macintosh”の頭文字が入っていますが、Windowsにも適用可能な環境です。

【参考】:MAMP & MAMP PRO(Mac) 

【参考】:MAMP & MAMP PRO(Windows) 

Docker

Dockerとは、Docker社が提供しているコンテナ仮想環境を作成・配布・実行するためのプラットフォームです。本記事ではPHP環境構築方法として紹介しますが、PHP以外にも様々な環境を仮想環境として作ることができます。

【参考】:Docker

Dockerとは?使いどころやメリット・デメリットについて解説!

Dockerを用いたPHP開発環境の構築手順

img_xamppdocker_02

以下では、Dockerを用いてPHP開発環境をローカルに作成する方法を紹介します。構成は1つの例なので、Dockerに慣れてきたら自分が開発しやすいような構成を考えてみてください。

今回作成する環境は以下の通りで、PHP開発時にはよくある構成であり、頭文字をとって「LAMP環境」とも呼ばれます。

実行環境...Linux

Webサーバ...Apache 2.4

DBサーバ...MySQL 5.7

言語...PHP 7.4

上記に加え、DBのGUI操作を可能にするミドルウェア「phpMyAdmin」も導入します。

DBクライアント...phpMyAdmin

Dockerのインストール

まず、ローカルマシンにDockerをインストールします。「Docker Desktop」と呼ばれるインストーラを下記リンクからダウンロードし、インストールしてください。

Mac・Windows共にインストーラが提供されています。Macの場合CPUがIntel製かApple製かでインストーラが変わるので、注意してください。

【参考】: Docker Desktop

インストールが完了したら、Macの方はターミナル、Windowsの方はコマンドプロンプト(またはPowershell)を開き下記コマンドを実行しましょう。Dockerのバージョンが出力されたらインストールOKです。

docker -v

Docker Desktop 4.2の新機能とインストール方法

フォルダ構成準備

ご自分のマシンに、環境構築用のフォルダを1つ作成してください。例として、今回は「lamp-docker」フォルダとします。lamp-dockerフォルダ配下に、以下のようにフォルダ及びファイルを作成します。



lamp-docker


├── docker-compose.yml //ファイル


├── html //フォルダ


    └── index.php //ファイル


├── mysql //フォルダ


└── php //フォルダ


    ├── Dockerfile //ファイル


    └── php.ini //ファイル

Dockerfileを作成

phpフォルダ配下のDockerfileに以下を入力します。



FROM php:7.4-apache 


RUN apt-get update && apt-get install -y libonig-dev && \


  docker-php-ext-install pdo_mysql mysqli mbstring

1行目でDockerのイメージを指定し、2~3行目でPHP開発に必要なライブラリをインストールしています。

docker-compose.ymlを作成

docker-compose.ymlファイルに下記の設定を記載していきます。MySQL用・phpMyAdmin用・PHPをそれぞれ動かすコンテナを作成する設定となっています。



version: '3'


services:


  #MySQL用コンテナ


  mysql:


    container_name: mysql


    image: mysql:5.7


    volumes:


      - ./mysql:/var/lib/mysql


    ports:


      - 3306:3306


    environment:


      - MYSQL_ROOT_PASSWORD=root


      - MYSQL_DATABASE=test


      - MYSQL_USER=test


      - MYSQL_PASSWORD=test


  #phpMyAdmin用コンテナ


  phpmyadmin:


    container_name: phpMyAdmin


    depends_on:


      - mysql


    image: phpmyadmin/phpmyadmin


    environment:


      PMA_HOST: mysql


    restart: always


    ports:


      - "80:80"


  #php用コンテナ


  php:


    container_name: php-apache


    build: ./php


    volumes:


      - ./html:/var/www/html


    ports:


      - 8080:80


    depends_on:


      - mysql

docker-compose.ymlファイルの書き方の詳細については、以下を参照してください。

【参考】:Composeを始めましょう

コンテナ作成、動作確認

Dockerfileとdocker-compose.ymlファイルの作成が完了したら、lamp-dockerフォルダ直下で下記コマンドを実行してください。「-d」はバックグラウンド実行のためのオプションです。

docker-compose up -d

最後に、動作確認を行っていきましょう。まずはphpの動作確認です。htmlフォルダ配下にindex.phpという名前のファイルを作成し、以下を記載してください。



<!DOCTYPE html>


<html lang="ja">


<head>


    <meta charset="UTF-8">


    <title>動作確認</title>


</head>


<body>


    <h1><?php


print ("DockerでPHP環境構築しました");


?></h1>


</body>


</html>

保存できたら、ブラウザから下記リンクにアクセスしてください。画面に「DockerでPHP環境構築しました」と表示されたら、phpが動作していることが確認できます。



http://localhost:8080

また、下記リンクはphpMyAdminのログイン画面を表示するURLです。言語とユーザ名/パスワードを入力し、ログインできればOKです。ユーザ名・パスワードは、docker-compose.ymlの中で設定したものを使ってください。



http://localhost:80

Dockerを用いるメリット/デメリット

img_xamppdocker_03

これまで述べてきたように、PHP開発環境を作成する方法にはXAMPP/MAMPをインストールする方法と、Dockerコンテナにより作成する方法があります。ここでは便宜上、XAMPPと比較した時のDockerのメリット・デメリットについて解説します。

Dockerのメリット

Dockerの最大のメリットは、「環境を削除・複製しやすい」ことにあります。

例えば複数プロジェクトでPHPを使いたくなった時、1つの端末にXAMPP環境を複数インストールする必要があります。XAMPPを複数インストールする際、インストール先のフォルダやポートが競合し合う可能性があり、環境構築に手間がかかります。

そのような場合Dockerであれば、複数環境をすぐ作成することができます。docker-compose.ymlを少し書き換え、別のフォルダで「docker-compose up -d」を実行すれば良いのです。

ちなみにDockerで作った環境とXAMPP環境を共存させることもできます。その際はApache、MySQLのポート(それぞれデフォルトで80、3306)が競合します。どちらかの環境を別ポートで再起動してみてください。

Dockerのメリットを徹底解説!仮想マシンとは何が違う?

Dockerのデメリット

Dockerのデメリットは、「環境構築のためにある程度知識が必要である」ことです。

Dockerは仮想環境にコンテナを立てる技術です。なので、ローカルマシンから仮想環境に接続できるよう、docker-compose.ymlやDockerfileをうまく記述する必要があります。

慣れるまではエラーが出て大変なこともありますが、1度理解してしまえばPHP環境の作成以外にも応用が効く点もメリットです。ぜひ勉強してみてください。

【参考】:Docker Compose 概要

Dockerで軽量・複製しやすいPHP環境を作成しよう

img_xamppdocker_04

本記事では、PHP開発環境の一例としてLAMP(Linux/Apache/MySQL/PHP)環境を取り上げ、Dockerを用いてLAMP環境を作成する方法を紹介しました。

またPHP開発環境パッケージの「XAMPP」「MAMP」を用いた方法とDockerを用いた方法を比較し、Dockerのメリット/デメリットについても解説しました。

それぞれの特性を理解し、開発チームにとって最適な環境構築手法を選ぶようにしてくださいね。

気になる人のTwitterをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

残業ほとんどなしの求人
IT業界の『残業ほとんど無しの求人』をピックアップ!その他、こだわり条件での求人検索も◎
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
エンジニア求人

編集部おすすめコンテンツ

残業ほとんどなしの求人
IT業界の『残業ほとんど無しの求人』をピックアップ!その他、こだわり条件での求人検索も◎
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT