Dockerfile之环境部署
部署python
Django :全栈WEB框架 | Flask:轻量级WEB框架 | FastAPI:异步WEB框架
镜像发布
⾸先在https://hub.docker.com/地址,注册⼀个账户,账户信息为:wangrongwr password:+++++++++
如果想把⾃⼰的镜像发布到dockerhub的地址,那么镜像的名称必须是name/imageName如image的名称为hello 那么要发布的镜像名称就为:wangrongwr/hello,如果不这样处理的话,进⾏push的时候,就会提示没有权限的操作,这点需要特别的注意。下⾯详细的演示发布镜像的过程,特别注意,邮箱必须要进⾏确认和验证。
发布镜像的过程具体如下:
1、登录到dockerhub
2、修改镜像⽂件为符合push的名称
3、发布镜像到dockerhub
4、dockerhub查看
5、删除后可在dockerhub中重新获取(docker pull ***)
6、获取指令如下:
Dockerfile(2)
Python部署
本案例主要使⽤Python语⾔,使⽤的WEB框架是Flask,然后来实现⼀个⽹站的部署过程,也就是说写好程序代码 好后,开发dockerfile的代码,执⾏以及⽣成镜像,其他⼈基于该镜像,docker run就可以在电脑跑起来对应的应⽤程序。
源代码
Dockerfile文件
这部分的Dockerfile⽂件的信息具体为:
构建镜像
下来构建镜像,指令为:
镜像信息
查看镜像是否运行信息
运行镜像
结果验证
浏览器访问(http://localhost:5000/login)
JAVA部署
操作源代码
Dockerfile文件
下来在docker⽂件夹⾥⾯创建Dockerfile的⽂件,⽂件内容具体如下:
启动程序jar包和Dockerfile文件保持在同一目录下
构建镜像
查看镜像消息
启动镜像
成功部署java环境
结果验证
浏览器访问地址:http://localhost:8080/login 结果与源代码中设定一致
一键package、构建镜像
操作源代码
一键生成镜像
构成jar包的同时,自动构建镜像
指令:mvn clean package -Dmaven.test.skip=true docker:build
查看镜像app信息
运行镜像
结果验证
浏览器访问:http://localhost:8081/index,显示结果与源代码设定一致
补充:Maven
maven的作用
1、在文件中添加相应的配置,maven就会自动的下载相应的jar包;
2、下载依赖,只要配置的jar包所依赖的其他jar包都会被它自动下载下来;
3、可以直接通过它打包war或者jar项目。
常用指令
mvn clean :清理(指的是把构建成功的.war or .jar进行删除)
mvn package:打包 (把代码打包构建成.jar .war )
Java实战
以Java为例,目录结果如下:
一般情况下,源代码处于以下路径:DBPlus\src\main\java\com\example\dbplus\controller
使用mvn clean和mvn package指令会清理或重新创建target文件夹,运行jar包也处于此目录下(所有代码的集合)
运行命令:java -jar xxx.jar.(jar的文件名) 运行命令,具体如下:java -jar DBPlus-0.0.1-SNAPSHOT.jar
浏览器验证结果如下:
Docker-compose启动镜像
Docker-compose
依据前⾯的SpringBoot的项⽬,在src/main/docker的⽂件夹下创建docker-compose.yml的⽂件,在该⽂件⾥⾯ 定义容器的⽹络,端⼝,被启动的镜像信息.
查看是否安装成功,成功查看版本:docker-compose -v
创建⽹络
下来创建⽹络,创建⽹络的⽬的是为了容器与宿主机是在同⼀个⽹络的模式下,⼀般我们创建的是Bridge,创建的 命令为:
⽹络创建成功后,就可以查看到⽬前的⽹络情况中存在mynetwork,具体如下:
构建镜像
启动镜像
下来在src/main/docker的⽬录下,执⾏如下命令来启动镜像信息,具体如下:
结果验证:
浏览器访问地址:http://localhost:8081/index 结果与源代码中设定一致
Docker安装软件
RabbitMQ
安装构建运行命令:docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management
#执⾏后输出的结果信息
打开http://localhost:15672/网址,输入账号:guest 密码:guest 进入
Docker容器监控
Docker监控原理
如果容器出现资源的瓶颈,那么就会导致容器中的程序都会出现问题,因为需要监控容器的资源信息。监控我们分 为两个维度来进⾏思考,具体如下: 基础数据采集 健康数据维护 cAdvisor监控 监控Docker的容器资源可以使⽤Google开源的cAdvisor,它可以收集到⼀台机器上所有运⾏的容器信息,不仅如 此,它还提供了基础查询界⾯和HTTP接⼝,⽅便其他组件来获取数据。监控到的资源主要是CPU,内存,⽹络吞 吐量,⽂件系统使⽤等情况。下⾯使⽤Docker的⽅式来搭建该环境。
cAdvisor搭建
搭建命令:docker pull registry.cn-hangzhou.aliyuncs.com/e7book/cadvisor:v0.37.0
cAdvisor运⾏
下⾯通过详细的命令来运⾏该容器,执⾏的命令具体如下:
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro -- volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro -- publish=8081:8080 --detach=true --name=cadvisor --privileged --device=/dev/kmsg registry.cn-hangzhou.aliyuncs.com/e7book/cadvisor:v0.37.0
在浏览器中访问http://localhost:8081/ ,就会显示如下界⾯,具体如下: