・PHP7.2の最新バージョン
・MySQL5.7の最新バージョン
・phpMyAdmin最新バージョン
目次
docker-composeでLAMP環境一発構築
docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mypass
volumes:
- ./mysql:/var/lib/mysql
command: --innodb-use-native-aio=0 // 2019.09 この行は不要になっています
web:
image: php:7.2-apache
ports:
- "80:80"
volumes:
- ./html:/var/www/html
depends_on:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=root
- PMA_PASSWORD=mypass
links:
- mysql
ports:
- 8080:80
volumes:
- /sessions
◆マシンのIP確認
$ docker-machine ip
192.168.99.100
◆全コンテナ起動
$ docker-compose up -d
◆コンテナ確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
329c9b908b9e php:7.2-apache "docker-php-entryp..." 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp lamp_web_1
db54c376f301 phpmyadmin/phpmyadmin "/run.sh superviso..." 3 minutes ago Up 3 minutes 9000/tcp, 0.0.0.0:8080->80/tcp lamp_phpmyadmin_1
455ec7e03731 mysql "docker-entrypoint..." 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp lamp_mysql_1
◆WEBページにアクセス
./html/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>DockerでLAMP開発環境</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>DockerでLAMP開発環境</h1>
</body>
</html>
http://192.168.99.100
[phpMyAdmin]
http://192.168.99.100:8080
注意
◆command: –innodb-use-native-aio=0について
ちょっと前まではこんなのなくてもよかったんだけど・・・
新しいイメージ使うときは注意です。
$ docker-compose logs
[ERROR] InnoDB: File ./ib_logfile101: 'aio write' returned OS error 122. Cannot continue operation
でMySQLが起動しなくなった。
この設定は「Linux の非同期 I/O サブシステムを使用するかどうか」(謎;)で
I/O 負荷の高いシステムの拡張性が改善されるらしいが立ち上がらないとね。。。
※ 2019.09 記述しなくても正常に起動できるようになっていました。
WordPress開発環境
ついでにWordpress開発環境
docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mypass
volumes:
- ./mysql:/var/lib/mysql
command: --innodb-use-native-aio=0 // 2019.09 この行は不要になっています
wp:
image: wordpress
environment:
WORDPRESS_DB_PASSWORD: mypass
WORDPRESS_DB_USER: root
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: wp
ports:
- "80:80"
links:
- mysql
volumes:
- ./html:/var/www/html
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=root
- PMA_PASSWORD=mypass
links:
- mysql
ports:
- '8080:80'
volumes:
- /sessions