Docker-Dockerfile
一、Dockerfile简述
使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等情况。
二、Dockerfile的组成部分
三、Dockerfile基本指令
dockerfile的指令主要可以汇总为如下:
• FROM→指令基础镜像
• MAINTAINER→指定维护者信息,也可以没有
• RUN→具体执行的操作,在命令前面加上RUN即可
• ADD→COPY文件,会自动进行解压
• WORKDIR→设置当前工作目录
• VOLUME→设置卷,挂载主机目录
• EXPOSE→指定对外的端口
• CMD→指定容器启动后需要干的事情
• COPY→复制文件
• ENV→环境变量
• ENTRYPOINT→容器启动后执行的命令
四、Dockerfile使用
构建Dockerfile的镜像信息命令为:
docker build -t [起的镜像名字] .
如果不起镜像名,命令为:
docker build .
实战1:部署centos服务:期望部署的是启动容器后,可以访问它的地址显示的信息。涉及到的centos的Dockerfile的文件内容在windows里面,新建一个“Dockerfile“文件,输入如下内容:
构建docker镜像的信息,将该镜像命名为”first_docker“:
构建镜像成功后,可以查看该镜像信息以及运行该容器,执行的结果就会显示“Hello Docker!”
实战2:未命名的镜像使用Dockerfile
会发现,如果没有定义镜像的名字,系统就会默认为"none"。如果想要重新定义名字,通过tag标签进行重命名即可。
五、Dockerfile实战
1、部署Nginx服务
期望部署的是启动容器后,可以访问它的地址显示的信息。涉及到的nginx的Dockerfile的文件内容在windows里面,新建一个”Dockerfile“文件,输入如下内容:
注意:只能有一个”Dockerfile“文件。
然后,构建docker镜像的信息:
当然,如果基础镜像nginx在原docker里,那么在下载的过程中会很快许多。
输入网址,即可访问:
在刚刚运行镜像的时候,可以查看我们操作过程中的日志信息:
比如,上图的postman进行了访问,google也进行了访问等日志信息。
2、部署Python
Django :全栈WEB框架
Flask:轻量级WEB框架
FastAPI:异步WEB框架
Dockerfile文件操作
使用的WEB框架是Flask,然后来实现⼀个网站的部署过程,也就是说写好程序代码好后,开发dockerfile的代码,执行以及生成镜像,其它是基于该镜像,docker run就可以在电脑跑起来对应的应用程序。
step1:期望部署的是启动容器后,可以访问它的地址显示的信息。涉及到的Dockerfile的文件内容在windows里面,新建一个"Dockerfile"文件,输入如下内容:
step2:然后,构建docker镜像的信息并将其命名为:login:docker build -t login .
step3:运行镜像:docker run --rm -p5000:5000 login
step4:输入网址,即可访问:localhost:5000/login
也可以看到响应状态码:200
3、部署SpringBoot框架下
java里常见的主流框架有:maven、springboot springcloud 、springcloud alibaba等。
maven是springboot的基础,而springboot是springcloud的基础。
同时,maven不依赖springboot,而springboot也不依赖springcloud。
3-1、前期准备:Java语言环境部署和maven环境部署
3-1-1、Java语言环境部署
3-1-2:首先配置好Maven的环境:
下载并解压apache-maven文件并将bin目录的路径添加到path路径下:
验证Maven环境是否搭建好命令为:mvn -v
3-1-2:Maven的功能
以DBPlus为例:
打开DBPlus文件夹,会有一个"target"文件夹:
a、清理:mvn clean(指的是把构建成功的.war or .jar进行删除)
此时,通过查看DBPlus文件夹,发现"target"文件夹被清理成功!
b、打包:mvn package(把代码打包构建成.jar .war )
其次,启动:java -jar [以.jar为后缀的文件]:
通过查询源代码,可以知道返回的数据是:
访问网址,可以得到响应。
3-2、部署SpringBoot
3-2-1、Dockerfile文件
step1:下来在docker文件夹里面创建Dockerfile的文件,文件内容具体如下:
注意:.jar包必须和Dockerfile放到同一个目录下。
step2:构建docker镜像的信息并运行镜像
3-2-2、Maven构建
将docker和maven整合起来,一体化,更加的自动化,不需要每次都像之前那么麻烦的去构建。
step1:假设将app.zip文件解压到这里:
step2:下来开始构建,构建的命令具体为:mvn clean package -Dmaven.test.skip=true docker:build
step3:镜像验证 :构建成功后,使用docker images命令
可以查看到app构建成功!
step4:运行镜像文件:运行的命令为:docker run --rm -p8081:8081 [image Id]
通过查询源代码,可以知道返回的数据是:
4、Docker-compose部署
由于安装 docker-compose需要依赖Python,所以先要安装好python并配置好其环境变量。
其次安装 docker-compose:pip install docker-compose
验证成功命令为:docker-compose -v
先将之前的app镜像在控制台里进行删除→依据前面的SpringBoot的项目,在src/main/docker的文件夹下创建docker-compose.yml的文件,在该文件里面定义容器的网络,端口,被启动的镜像信息,文件详细的信息如下:
会发现有networks,因此需要创建一个network。
创建网络,目的是为了容器与宿主机是在同⼀个网络的模式下,⼀般我们创建的是Bridge,创建的命令为:
通过docker network list,查看目前的网络信息:
下来开始构建,构建的命令具体为:mvn clean package -Dmaven.test.skip=true docker:build
启动镜像:docker-compose up
通过访问网址:
停止镜像:docker-compose down