uni farm

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

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がたちあがる

version: "3"
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をインストールする

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の設定ファイル

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

mysqlの設定ファイル

[mysqld]
character-set-server=utf8
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が実行される。

php server

laravelのインストール

https://readouble.com/laravel/5.7/ja/installation.html を参考に

bashでコンテナに入って

docker-compose run --rm app /bin/bash
composer create-project --prefer-dist laravel/laravel blog

blogというプロジェクト名でインストールされる blog/ディレクトリにいろいろなファイルが入る

コンテナを抜けて docker-compose.ymlのPROJECT_NAMEを更新する

    environment:
      - PROJECT_NAME=demo/blog

upでコンテナを立ち上げる

docker-compose up

http://127.0.0.1:4001/ にアクセスすれば laravelの初期ページが表示される

2023, Built with Gatsby. This site uses Google Analytics.