uni memo

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

docker-compose.yml
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をインストールする

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が実行される。

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
を更新する

docker-compose.yml
    environment:
      - PROJECT_NAME=demo/blog

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

docker-compose up

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

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