13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Docker] PHP 5.6 + MySQL 5.6の環境をDockerで作る方法

Posted at

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

太字で表示されれば成功です!

私の環境での表示イメージをです!
FireShot Capture 052 -  - localhost.png

終わりに

わかりにくい部分があれば、コメントください!

これからも役立つ情報を公開していくのフォローお願いします!

13
12
0

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
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?