Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会根据本人理解去做阐述,具体官方概念可以查阅官方教程,因为本系列教程对前一章节有一定依赖,建议先学习前面章节内容。
本系列教程导航:
Docker深入浅出系列 | 容器初体验
Docker深入浅出系列 | Image实战演练
Docker深入浅出系列 | 单节点多容器网络通信
Docker深入浅出系列 | 容器数据持久化
教程目的:
1.下载mysql
2.下载nginx
3.克隆credit-facility-service
作为后面部署演示使用,使用docker
分支
4.虚拟机、centos和docker环境安装请查看第一章,本章默认已经安装好centos和docker
Docker深入浅出系列 | 容器初体验
168.18.0.0/24
这里先创建一个属于这个项目的私有网络,后面对容器分别分配一个静态子网IP,方便维护
1.通过docker network
创建网络
这里创建了一个网络,命名为credit-facility-net
,并且指定了一个子网IP网段 168.18.0.0/24
2.查看宿主机器Centos系统外网IP,用于后面在本机访问虚拟机应用使用
这里Centos系统ip是192.168.101.23
,需要记住你的宿主机器ip,后面进行测试需要频繁用到
为了方便后面重复使用,这里会先创建一个volume用于Mysql数据持久化
1.创建docker volume,命名为credit-facility-volume
2.创建Mysql容器
这里创建了一个credit-facility-db
容器,把Mysql的数据存储路径指定了宿主机credit-facility-volume
目录,把3306端口映射到宿主机3301端口,把容器网络加入到credit-facility-net
,并且分配一个静态ip 168.18.0.4
3.进入Mysql容器并创建数据库实例
这里创建了一个数据库实例,命名为db_credit_facility
4.创建应用关联的表
相关表存放在credit-facility-service-infrastructure/resources/db/schema.sql,请按照前期准备指示从github下载credit-facility-service
项目
5.通过docker inspect
查看下容器信息
从上面输出结果可以看出,容器的存储路径已经成功挂载到宿主机目录/var/lib/docker/volumes/credit-facility-volume/_data
,容器ip也成功设置成168.18.0.4
额度服务是一个Springboot项目,其搭建过程跟普通Springboot项目一样
1.搭建前,请先通过mvn clean -U install
对项目构建一次,确保可以构建成功,注意要切换到项目的docker分支
2.修改数据库配置application.properties
,默认情况下,大家不需要修改,因为我这里的数据库host是通过容器名称进行访问,配置文件路径存放在start/resources
下
如果需要在本地运行,可以把数据库host修改成<Centos ip>:3301
如:
3.在docker宿主机器Centos上创建一个名字为credit-facility
的文件夹
我的文件夹创建路径如下:
4.在credit-facility
的文件夹下创建一个Dockerfile文件,用于后面额度服务镜像创建使用
在credit-facility-sevice
项目里有一个dockerfile
文件夹,只需要把里面的Dockerfile
文件复制到Centos系统credit-facility
的文件夹下即可
在我本机是通过sftp上传到Centos系统指定目录下,大家可以用一些工具直接上传即可
5.对额度服务打成jar包,并且上传
通过mvn clean package -Dmaven.test.skip=true
命令对项目进行打包,可以在start/target下找到start-1.0.0-SNAPSHOT.jar
上传到Centos上的credit-facility
的文件夹下
同上,我这里也是通过sftp从本地上传到服务器上
credit-facility
的文件夹下应该存在两个文件
6.基于之前创建的Dockfile创建一个image
7.查看现有的镜像
8.创建3个额度服务容器实例
上面分别创建了3个实例credit-facility01、credit-facility02、credit-facility03,加入credit-facility-net
网络,并且把ip分别指定为168.18.0.10、168.18.0.11和168.18.0.12
9.通过docker logs credit-facility01
查看容器启动日志
10.通过在本机通过浏览器进行测试,可以看到如下swagger界面
跟前面一样,我通过容器名称进行反向代理而不是容器ip地址,因为docker对于自定义网络默认开启内置DNS服务,通过容器名称进行通信,可以更加灵活,不需要绑定具体ip
1.在Contos系统credit-facility
的文件夹下,创建一个新文件夹,命名nginx
2.进入nginx文件夹,创建一个nginx.conf
文件,内容如下
这里路由规则配置三个额度服务的容器名称代替了IP地址
3.创建nginx容器
这里创建了一个名为credit-facility-nginx
的nginx容器,指定了系统映射端口为80,这里比较重要的是复制/usr/local/credit-facility/nginx/nginx.conf
到/etc/nginx/nginx.conf
,并且分配ip168.18.0.5
4.在浏览器验证nginx服务,输入192.168.101.23
这时候nginx已经搭建成功了
1.在浏览器输入http://192.168.101.23/swagger-ui.html
,可以看到如下界面
2.选用第一个接口测试,输入如下请求数据
3.执行后查看执行结果,看是否入库成功
从上面执行结果可以看出,额度服务已经成功处理请求,并且入库成功,此时可以到数据库去查看下数据库记录
__EOF__
Docker深入浅出系列 | 单机Nginx+Springboot实战
原文:https://www.cnblogs.com/lonelyxmas/p/12391783.html