第3次实践作业
一、安装Docker-compose
(1)参考了同学的在root权限下换源下载,只用了几秒。
sudo su进入root权限
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

(2)将可执行权限应用于二进制文件,测试是否安装成功
sudo chmod +x /usr/local/bin/docker-compose
sudo docker-compose --version
二、Dockerfile编写
(1)拉取nginx镜像、php镜像、mysql镜像
- 拉nginx镜像
sudo docker pull nginx:latest

- 拉取php镜像
sudo docker pull php:7.4-fpm

- 拉取mysql镜像
sudo docker pull mysql

(2)Dockfile文件的编写
2.1 创建docker_compose文件夹,目录结构如下

2.2 创建dockerfile_mysql、dockerfile_php、default.conf、docker-compose.yml、dockerfile_nginx、index.html、index.php文件
- dockerfile_mysql

- dockerfile_php

- default.conf

- docker-compose.yml

- dockerfile_nginx

- Index.html

- Index.php

三、使用Compose实现多容器运行机制
(1)查看docker_compose文件夹的树状结构
sudo apt install tree
cd docker_composetree

tree

(2)执行docker-compose文件
sudo docker-compose up -d --build

(3)查看容器
sudo docker ps -a

(4)查看镜像
sudo docker images

(5)访问localhost/index.html

(6)访问localhost/index.php

四、服务测试
(1)检测PHP是否能够成功连接Mysql数据库
1.1 修改index.php文件

1.2 访问localhost/index.php

(2)数据库相关操作
2.1 创建数据库

访问http://localhost/index.php

进入mysql容器,查询数据库
sudo docker exec -it mysql /bin/bash
mysql -u root -p
show databases;

2.2 创建数据表

访问网页

使用myDB数据库并查询数据表
use myDB
show tables;

2.3 向数据表中插入数据

访问页面

查询数据库
select * from user;

2.4 修改数据

访问页面

查询数据库
select * from user;

2.5 删除数据

访问页面

查询数据库,xiaoming已经被删除
select * from user;
五、增加一个phpmyadmin容器,实现web端的数据库管理
(1)在docker-compose.yml文件中增加以下代码

(2)创建dockerfile_phpmyadmin文件

(3)执行docker-compose文件

(4) 访问localhost:8080/index.php

5.1 登录成功后

5.2 选择myDB数据库,查看user表数据

六、出现的问题及解决方案
1. 执行docker_compose文件时创建mynginx失败

查看报错信息发现之前做实验时已经创建过mynginx容器,sudo docker ps -a查看之前创建的mynginx容器id,sudo docker rm id把创建过的容器删除,再重新build即可解决


2. 在增加一个phpmyadmin容器后执行dockerfile_compose文件时出错

报错原因为找不到指定的dockerfile文件,仔细检查后发现文件名写错了一个单词,改正后重新执行得到解决。
七、所花时间和总结
先是花了大概一上午的时间了解了一下Docker Compose和php,下午则是实际操作,期间也借鉴已经做好的同学的博客,总体做下来还是比较顺利的,晚上则完成博客,所以总体下来花了将近一天的时间。这次作业让我意识到细心的重要性,还有就是要仔细查看报错信息,报错信息是解决问题的关键。这次作业使我对docker的理解更深刻了。



浙公网安备 33010602011771号