はじめに
みなさん、環境構築ってめんどくさくないですか?
僕はめんどくさいです。
本を使ってPHPの勉強をする機会があったのですが、環境構築をしたくなかったのでDockerを用いることにしました。
やること
『PHP7+MariaDB/MySQL マスターブック』では、XAMPPというパッケージを使用するのですが、Dockerにて環境を再現します。
- PHP:7.4を使えるようにする
- Apacheを使えるようにする
- MariaDBを使えるようにする
- この本ではメールを用いるためメールサーバを立ち上げる
注意:この記事ではXAMPPに似た環境を構築する手順を示すのみであり、詳しい解説等はしません(今後追記していくかは未定)
動作環境
M1 MacBook Air(MacOS 13.1)
Docker
ファイル構成
PHP
├ php
│ └ dockerfile
├ mysql
│ ├ init/
│ └ mysqld_charset.cnf
├ source/
└ docker-compose.yml
composeファイル
まずはすべての基礎となるcomposeファイルを記述していきます
apacheについては、php:7.4-apacheというPHP:7.4とapacheをひとまとめにしたコンテナイメージがあったのでそれを使います
version: '3'
services:
#php用コンテナ
php:
container_name: php-apache
build: ./php
volumes:
- ./sorce:/var/www/html
ports:
- 8080:80
depends_on:
- mysql
#MariaDB用コンテナ
mysql:
container_name: mariaDB
image: mariadb:latest
volumes:
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/init:/docker-entrypoint-initdb.d
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=admin
#mailコンテナ
#メールアドレス:nobody@example.com
mail:
container_name: mail
image: djfarrelly/maildev
ports:
- "1080:80"
- "1025:1025"
source/
ここには表示させたいphpファイルを置きます
php/
ここにはphp-apache
コンテナの設定用ファイルを置きます
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libonig-dev && \
apt install -y ssmtp && \
docker-php-ext-install pdo_mysql mysqli mbstring
RUN apt-get install -y --no-install-recommends libc-client-dev libkrb5-dev \
&& PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap
ENV APACHE_DOCUMENT_ROOT /var/www/html/htdocs
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
このdockerfile
で必要なドライバやモジュール類のインストールとapacheの設定は完了します
mysql/
ここにはmariaDB
コンテナの設定用ファイルを置きます
今回、必要事項はdocker-compose.yml
に必要事項は書いてあるのでdockerfile
は必要ありません
代わりにMariaDBの設定用ファイルを置きます
[mysql]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
character_set_filesystem=utf8mb4
collation-server=utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
init_connect='SET collation_connection = utf8mb4_general_ci'
skip-character-set-client-handshake
これによりMariaDBで日本語を扱えるようになります
init/
ここにはDB起動時に読み込ませたいSQlファイルを置きます
完成
以上で完成です!
あとはこれをDockerで起動させるだけでXAMPPと同じようなPHP開発環境を構築することができます。
参考
php:7.4-apache
maildev