特定のバージョンを使用したPHPの開発環境をDockerで作る

久々に技術Tipsを書いてみます。

古いプロジェクトでは、PHPなどのプログラミング言語を古いバージョンで使用しなければならないケースがあります。通常は、(私の場合)asdfを使ってバージョン切り替えを行っているのですが、特にPHPの古いバージョンはasdfでの導入が難しいことがあるようです。

そこで、Dockerを使って開発環境を作ってみましょう。ここでは、比較的古めのCakePHPを動作させるために、PHP7.4の環境を作ります。

dockerディレクトリの内容

まず、プロジェクト内にdockerを作成し、下記のようなDockerfileを配置します。

# Dockerfile
FROM php:7.4

# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    unzip zip git curl \
    libzip-dev libicu-dev libonig-dev libxml2-dev \
    libssl-dev libcurl4-openssl-dev libpng-dev \
    libjpeg-dev libfreetype6-dev libxslt-dev \
    && docker-php-ext-install \
    pdo pdo_mysql intl mbstring zip xml curl gd xsl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Composer インストール(必要なら)
#RUN curl -sS https://getcomposer.org/installer | php && \
#    mv composer.phar /usr/local/bin/composer

# phpの追加設定
COPY ./php.ini /usr/local/etc/php/conf.d/99-custom.ini

WORKDIR /app

PHPの追加設定が必要な場合は、php.iniを下記のように作成します。

memory_limit = 1G
upload_max_filesize = 100M
post_max_size = 100M

Dockerイメージのビルド

次に、Dockerイメージをビルドします。

docker build -t php74-cakephp .

Dockerコンテナの起動

イメージのビルドが終わったら、Dockerコンテナを起動します。
CakePHPの使用を想定しているのですが、ここでは、ポートを8766にしています。(デフォルトは8765)

カレントディレクトリがDockerコンテナ上のワークディレクトリとなるため、実行する際のカレントディレクトリは適宜移動しておく必要があります。

docker run -it --rm -v "$PWD":/app -w /app -p 8766:8766 php74-cakephp bash

上記でコンテナを起動し、bashに入った後、下記のコマンドでCakePHPの開発サーバを立ち上げます。

cd sbw
bin/cake server -H 0.0.0.0 -p 8765

MySQLなどへの接続

Dockerコンテナ内から、ホストマシン上のMySQL等に接続する場合は、host.docker.internalを使用します。

これで問題なく開発を始められるはずです。

この記事を書いた人

井上 研一

株式会社VIVINKO 代表取締役/VIVINKOコンサルティング 代表
経済産業省推進資格ITコーディネータ/ITエンジニア

AI・IoTに強いITコーディネータとして活動していたところ、2017年に北九州市主催のビジネスコンテスト「北九州でIoT」に当時主催していたコミュニティで応募したアイディアが入選。2018年、株式会社ビビンコ(現VIVINKO)を北九州市に設立し、IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発を行う。2024年、生成AIを業務に組み込むためのサービス「Gen2Go」を開発し、北九州発!新商品創出事業の認定を受ける。日本全国でセミナー・研修講師としての登壇も多数。
一般社団法人IT経営コンサルティング九州(ITC九州)理事