一、安装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的理解更深刻了。