PHP 5.6 + MySQL 5.6の環境をDockerで作る方法
こんにちは、ITエンジニアの田中です。
今回は、PHP 5.6 + MySQL 5.6の環境をDockerで作る方法を説明します。
この記事の対象者
PHP7.4がすでにリリースされているこの2020年に、
2014年8月28日リリースされたPHP5.6の環境が必要になった希少なあなたに向けて書いた記事です。
過去のアプリケーションのリファクタリングをするときには有益です。
構築される環境
- PHP 5.6.40
- Apache/2.4.25 (Debian)
- mysql Ver14.14 Distrib 5.6.47
前提環境
- dockerインストール済み
私の環境
- mackbook
フォルダ構成
root/
├ app/
│ └ public (Web公開されるパス)
├ config/
│ └ php/php.ini (phpで使用する設定ファイル)
├ data/ (mysqlのデータ)
├ initdb.d (コンテナーを作成するときに実行されるSQL)
└ docker-compose.yml
└ Dockerfile
Apache設定ファイルを取得・変更
Apacheの設定を変更し、公開フォルダを変更します。
■ 変更前
/var/www/html
■ 変更後
/var/www/html/public
下記の記事を参考にしてください。
https://qiita.com/eidera/items/19decbfc290b4776cfc3
Dockerfileの作成
下記のDockerfileの内容をコピーして作成してください。
FROM php:5.6-apache
# PHPのインストール
RUN apt-get update \
&& apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
openssl libssl-dev \
libxml2-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt pdo_mysql mbstring xml tokenizer zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysql \
&& pear channel-update pear.php.net \
&& pear upgrade-all \
&& pear config-set auto_discover 1 \
&& pear install DB
# apacheのrewriteを有効にする
RUN cd /etc/apache2/mods-enabled \
&& ln -s ../mods-available/rewrite.load
COPY /config/php/php.ini /usr/local/etc/php/php.ini
WORKDIR /var/www/html
docker-compose.ymlの作成
下記のdocker-compose.ymlの内容をコピーして作成してください。
web:
container_name: web
build: .
ports:
- "80:80"
environment:
# bargeでは、/usr/local/binも追加しておかないと起動できない。
PATH: ${PATH}:/usr/local/bin:/root/.composer/vendor/bin
volumes:
- ./app:/var/www/html
- ./config/apache2/sites-available:/etc/apache2/sites-available
links:
- db
db:
image: mysql:5.6
container_name: mysql5.6
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --init-connect="SET NAMES utf8" --innodb_file_per_table=1 --innodb_file_format=BARRACUDA
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: libary_beauty
MYSQL_USER: local
MYSQL_PASSWORD: password
volumes:
- "./data:/var/lib/mysql"
- "./initdb.d:/docker-entrypoint-initdb.d"
ports:
- "13306:3306"
テスト用のPHPファイル
下記のtest.phpの内容をコピーして作成してください。
そして、app/publicの下に置いてください。
<?php
echo "<h1>これはテストです!</h1>";
buildして起動
> docker-compose build
> docker-compose up
テスト実行
下記のURLにアクセスしてください!
http://localhost/test.php
太字で表示されれば成功です!
終わりに
わかりにくい部分があれば、コメントください!
これからも役立つ情報を公開していくのフォローお願いします!