久々に技術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
を使用します。
これで問題なく開発を始められるはずです。