LoginSignup
22
10

はじめに

みなさん、環境構築ってめんどくさくないですか?
僕はめんどくさいです。

本を使って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をひとまとめにしたコンテナイメージがあったのでそれを使います

docker-compose.yml
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コンテナの設定用ファイルを置きます

dockerfile
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の設定用ファイルを置きます

mysqld_charset.cnf
[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

22
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
10