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
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の初期ページが表示される