DockerでLAMP開発環境

・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