第3次实践作业
(1)完成Docker-compose的安装
1.运行以下命令以下载Docker Compose的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.将可执行权限应用于二进制文件并测试是否完成安装:
sudo chmod +x /usr/local/bin/docker-compose
sudo docker-compose --version
(2)Dockerfile编写
1.对各类文件的编写
我在这里选择的是LNMP
dockerfile
# tree compose-lnmp/nginx
FROM nginx:latest
# tree compose-lnmp/mysql
FROM mysql:5.7
# tree compose-lnmp/phpfpm
FROM php:5.6-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng12*-dev \
vim \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
html
hi heiren
2.执行docker-compose
sudo docker-compose up -d
LNMP/LAMP选择一种;
分别构建web、php应用、数据库等镜像服务,php镜像亦有提供php:
提示:php连接数据库需要安装必要的核心扩展部件(PHP Core Extensions)安装方法可参考官方镜像介绍。
(3)使用Compose实现多容器运行机制
编写compose文件,完成上述LNMP/LAMP的微服务组合部署。
docker-compose.yml
# tree compose-lnmp/docker-compose.yml
version: "3"
services:
nginx:
build: ./nginx
ports:
- "80:80"
links:
- "phpfpm"
volumes:
- ./html/:/var/www/html/
- ./nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
phpfpm:
build: ./phpfpm
ports:
- "9000:9000"
volumes:
- ./html/:/var/www/html/
links:
- "mysql"
mysql:
build: ./mysql
ports:
- "13306:3306"
volumes:
- ./mysql/data/:/var/lib/mysql/
environment:
MYSQL_ROOT_PASSWORD : 123456
(4)服务测试
要求和提示:
1.nginx测试
2.php测试
检测到PDO的安装
3.连接数据库
这里选择用PDO连接
此处参考PHP 连接 MySQL
这里一次性给出了三个窗口
4.创建数据库
修改index.php文档并运行(编辑内容已在图中)
可以看到成功连接到数据库
查看数据库
sudo docker exec -it compose-lnmp_mysql_1 /bin/bash
mysql -u root -p
进入数据库成功
查看数据库
show databases;
5.创建数据表
修改index.php文档并运行(编辑内容已在图中)
创建了一个命名为sneaker的表,并有ID、尺码和颜色三个属性
可以看到已经创建成功
进入数据库并查表
use myDBPDO
show tables;
5.插入表记录
修改index.php文档(编辑内容已在图中)
这里插入了一些热门鞋款
查询表记录
select * from sneaker;
6.修改表记录
修改index.php文档(编辑内容已在图中)
修改350的鞋码为uk9.5
查表
可以看到已经修改成功
7.删除表记录
修改index.php文档(编辑内容已在图中)
删除350的记录
查表
可以看到已经删除成功
(5)选做
1.编辑yml文件添加相关内容(编辑内容已在图中)
2.编辑dockerfile文件(编辑内容已在图中)
3.用浏览器访问https://localhost:8080/
先build再访问,懂的都懂
登录成功
4.可以查看到我们之前创建的myDBPDO的具体结构
5.对表结构进行修改
插入700海盐的uk12鞋款
可以看到已经插入成功
将700的颜色更新为黑武士
执行成功
增加一个phpmyadmin容器,实现web端的数据库管理。
(6)遇到的问题及分析
1.在选做部分刚编辑完phpmyadmin执行sudo docker-compose down时出错
phpmyadmin应与其他属性在同一位置,我在复制时没有注意到,所以系统将它认定为顶层属性,导致出错
2.在yml文件中的bulid编辑错了一个字母
这有点低级错误了
(6)感想及体会
我的博客是和实验同步进行的,大概14个小时。
来写一写这次的感想吧,这次实验我本来是打算一天内连续把它做完的,没想到在做的过程中一直碰到各种问题,然后也翻阅了许多博客和教程网,最终跨越了一天才将它完成了。其实我先前就已经听说过nginx了,之前的了解就是nginx是一个高性能的HTTP和反向代理web服务器,同时也能够提供IMAP/POP3/SMTP服务。据说Nginx是Apache服务器不错的替代品,但是需要高连接并发的情况下才能实现。这次还学到了docker-compose的多容器机制实现,我想之后对部署工程或者程序会起到很大的作用,这样就能实现一种轻量级的微服务部署,希望之后能有实现的机会,也十分期待后几次实践课的实验内容了,我想应该到最后会用上的。