Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

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

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

終わりに

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?