LoginSignup
104
112

More than 1 year has passed since last update.

docker-compose で PHP7.2 + Apache + MySQL + phpMyAdmin 環境を構築

Last updated at Posted at 2019-03-02

Docker の学習メモです。

本記事でのコンテナ作成は全て Docker Hub の image を使用して行なっています。
Dockerfile からのイメージ作成はまた今度。

ディレクトリ構造

  .
  ├── docker-compose.yml
  ├── html
  │    └── index.php
  └── php.ini

docker-compose.yml

docker-compose.yml
version: '3'

services:
  php:
    image: php:7.2-apache
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 8080:80
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=test
      - PMA_PASSWORD=test
    links:
      - mysql
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions

index.php

html/index.php
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>php7.2-apache</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>

php.ini

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

現在のコンテナ稼働状況を確認

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

稼働中のコンテナが存在していないため、何も表示されない。

コンテナの作成と開始

$ docker-compose up -d
Creating network "php72-apache_default" with the default driver
Creating php72-apache_mysql_1 ... done
Creating php72-apache_php_1        ... done
Creating php72-apache_phpmyadmin_1 ... done

コンテナの稼働状況を確認する。

$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED              STATUS              PORTS                            NAMES
120e4b86b987        phpmyadmin/phpmyadmin   "/run.sh supervisord…"   About a minute ago   Up About a minute   9000/tcp, 0.0.0.0:4040->80/tcp   php72-apache_phpmyadmin_1
bf42cd71d3d4        php:7.2-apache          "docker-php-entrypoi…"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp             php72-apache_php_1
699f32a6424e        mysql:5.7               "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp              php72-apache_mysql_1

PHP の確認

ローカルの html/index.php の内容を変更すると反映される。

MySQL + phpMyAdmin の確認

サービスの停止

docker-compose.yml に記載されているサービスのコンテナが全て停止される。

$ docker-compose stop
Stopping php72-apache_phpmyadmin_1 ... done
Stopping php72-apache_php_1        ... done
Stopping php72-apache_mysql_1      ... done

コンテナの稼働状況を確認する。
停止しているコンテナを表示する為に -a オプションを使用します。

$ docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                      PORTS               NAMES
120e4b86b987        phpmyadmin/phpmyadmin   "/run.sh supervisord…"   3 minutes ago       Exited (0) 11 seconds ago                       php72-apache_phpmyadmin_1
bf42cd71d3d4        php:7.2-apache          "docker-php-entrypoi…"   3 minutes ago       Exited (0) 11 seconds ago                       php72-apache_php_1
699f32a6424e        mysql:5.7               "docker-entrypoint.s…"   3 minutes ago       Exited (0) 11 seconds ago                       php72-apache_mysql_1

サービスの開始

docker-compose.yml に記載されているサービスのコンテナが稼働する。
あらかじめ、コンテナが作成されている必要がある。

$ docker-compose start
Starting php        ... done
Starting mysql      ... done
Starting phpmyadmin ... done
$ docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                            NAMES
120e4b86b987        phpmyadmin/phpmyadmin   "/run.sh supervisord…"   8 minutes ago       Up 10 seconds       9000/tcp, 0.0.0.0:4040->80/tcp   php72-apache_phpmyadmin_1
bf42cd71d3d4        php:7.2-apache          "docker-php-entrypoi…"   8 minutes ago       Up 11 seconds       0.0.0.0:8080->80/tcp             php72-apache_php_1
699f32a6424e        mysql:5.7               "docker-entrypoint.s…"   8 minutes ago       Up 12 seconds       3306/tcp, 33060/tcp              php72-apache_mysql_1

コンテナの削除

docker-compose.yml に記載されているサービスのコンテナを停止、コンテナとネットワークが削除される。

$ docker-compose down
Stopping php72-apache_phpmyadmin_1 ... done
Stopping php72-apache_php_1        ... done
Stopping php72-apache_mysql_1      ... done
Removing php72-apache_phpmyadmin_1 ... done
Removing php72-apache_php_1        ... done
Removing php72-apache_mysql_1      ... done
Removing network php72-apache_default
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
104
112
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
104
112