docker-composeでPHP7+composer+MySQL環境の構築

docker-composeでphpの開発環境を構築する
ついでにmysqlなんかもいれておく

環境

docker: 17.09.0-ce
docker-compose: 1.15.0

用意するファイル

docker-compose.yml

phpとmysqlとphpmyadminがたちあがる

docker-compose.yml
version: "2"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile-php
      args:
        PROJECT_NAME: $PROJECT_NAME
    volumes:
      - ./$PROJECT_NAME:/var/www/html
    ports:
      - "4000:80"
      - "4001:8000"
    tty: true
    environment:
      - PROJECT_NAME=demo
  db:
    image: mysql:5.7
    volumes:
      - ./db:/var/lib/mysql
      - ./mysql_conf:/etc/mysql/conf.d
    env_file:
      .env_db
    ports:
      - 13306:3306
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=db
      - PMA_USER=root
      - PMA_PASSWORD=root
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin-session:/sessions
volumes:
  db:

Dockerfile-php

PHP7+composerをインストールする

Dockerfile-php
FROM php:7-apache
COPY php.ini /usr/local/etc/php/
RUN apt-get update && apt-get install -y 
  libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev 
  git vim unzip 
  && docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt 
  && apt-get clean
# install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

phpの設定ファイル

php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

mysqlの設定ファイル

my.cnf
[mysqld]
character-set-server=utf8
.env_db
MYSQL_DATABASE=test
MYSQL_USER=test
MYSQL_PASSORD=test
MYSQL_ROOT_PASSWORD=root

コンテナ作成

$ docker-compose up -d # buildがはじまる(結構長い・・・
$ docker-compose ps
    Name              Command           Stat                 Ports               
                                         e                                       
--------------------------------------------------------------------------------
php_app_1      docker-php-entrypoint    Up     0.0.0.0:4000->80/tcp,             
               apac ...                        0.0.0.0:4001->8000/tcp            
php_db_1       docker-entrypoint.sh     Up     0.0.0.0:13306->3306/tcp           
               mysqld                                                            
php_phpmyadm   /run.sh phpmyadmin       Up     0.0.0.0:4040->80/tcp              
in_1      

phpの開発

appコンテナ内でcomposerが実行できる

$ docker-compose exec app /bin/bash 
root@ce5ba394084e:/var/www/html# composer -V
Composer version 1.5.2 2017-09-11 16:59:25

また、$PROJECT_NAMEフォルダ(例ではdemoフォルダ)以下がサーバのルートディレクトリになっている

root@ce5ba394084e:/var/www/html#  echo "<?php echo '<p>Hello World</p>'; ?>" > index.php

として
http://localhost:4000にアクセスすると、phpが実行される。

hello.png

[紹介元] PHPタグが付けられた新着投稿 – Qiita docker-composeでPHP7+composer+MySQL環境の構築

関連記事