这是Docker学习笔记。
本文中的所有容器创建都是使用Docker Hub的图像完成的。
再次从Dockerfile创建映像。
目录结构
1 2 3 4 5 | . ├── docker-compose.yml └── html │ └── index.php └── php.ini |
docker-compose.yml
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"> php7.2-apache <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <?php phpinfo(); ?> </body> </html> |
php.ini
php.ini
1 2 3 4 5 | [Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" |
检查当前容器的运行状态
1 2 | $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
不显示任何内容,因为没有运行中的容器。
创建和启动容器
1 2 3 4 5 | $ 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 |
检查容器的运行状态。
1 2 3 4 5 | $ 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检查
http://本地主机:8080 /
如果您更改本地html / index.php的内容,则会反映出来。
检查MySQL phpMyAdmin
http://本地主机:4040 /
服务中断
docker-compose.yml中列出的所有服务容器将被停止。
1 2 3 4 | $ docker-compose stop Stopping php72-apache_phpmyadmin_1 ... done Stopping php72-apache_php_1 ... done Stopping php72-apache_mysql_1 ... done |
检查容器的运行状态。
使用
1 2 3 4 5 | $ 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中列出的服务的容器运行。
容器需要预先创建。
1 2 3 4 | $ docker-compose start Starting php ... done Starting mysql ... done Starting phpmyadmin ... done |
1 2 3 4 5 | $ 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中列出的服务的容器,该容器和网络将被删除。
1 2 3 4 5 6 7 8 | $ 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 |
1 2 | $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |