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