Dockerfile命令详细介绍及springboot项目部署案例

   日期:2024-12-27    作者:xxyxjxsb 移动:http://mip.riyuangf.com/mobile/quote/65157.html

Dockerfile命令详细介绍及springboot项目部署案例

什么是Dockerfile
Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。主要作用是用来构建docker镜像的构建文件


以下是本篇文章正文内容,如果某些知识点错误 请指正!谢谢

官方说明:https://docs.docker.com/engine/reference/builder/

保留字作用FROM当前镜像是基于哪个镜像的 MAINTAINER镜像维护者的姓名和邮箱地址RUN构建镜像时需要运行的指令EXPOSE当前容器对外暴露出的端口号WORKDIR指定在创建容器后,终端默认登录进来的工作目录,一个落脚点ENV用来在构建镜像过程中设置环境变量ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包COPY类似于ADD,拷贝文件和目录到镜像中
将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME容器数据卷,用于数据保存和持久化工作CMD指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker
ENTRYPOINT指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数

1.3.1 FROM 命令

  • 基于那个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像 必须作为Dockerfile的第一个指令出现

  • 语法:

     

1.3.2 MAINTAINER 命令

  • 镜像维护者的姓名和邮箱地址[废弃]

  • 语法:

     

1.3.3 RUN 命令

  • RUN指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于Dockerfile中的下一步

  • 语法:

     

1.3.4 EXPOSE 命令

  • 用来指定构建的镜像在运行为容器时对外暴露的端口

  • 语法:

     

1.3.5 CMD 命令

  • 用来为启动的容器指定执行的命令。

  • 注意: Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。

  • 语法:

     

1.3.6 WORKDIR 命令

  • 用来为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使它没有在任何后续Dockerfile指令中使用,它也将被创建。

  • 语法:

     

1.3.7 ENV 命令

  • 用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中(相当于将公共的抽离出来了)。

  • 语法

     

1.3.8 ADD 命令

  • 用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中。

  • 语法:

     

1.3.9 COPY 命令

  • 用来将context目录中指定文件复制到镜像的指定目录中

  • 语法:

     

1.3.10 VOLUME 命令

  • docker run 命令的-v标识创建的挂载点只能对创建的容器有效

  • 通过doakerfile的 VOLUME指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点

  • 通俗讲:通过 VOLUME 指令创建的挂载点,在通过该镜像创建容器的时候无法指定主机上对应的目录,因为它是自动生成的

     

1.3.11 ENTRYPOINT命令

  • 用来指定容器启动时执行命令和CMD类似

  • 语法:

     

    ENTRYPOINT指令,往往用于设置容器启动后的第一个命令,这对一个容器来说往往是固定的。
    CMD指令,往往用于设置容器启动的第一个命令的默认参数,这对一个容器来说可以是变化的。
    通常这两个指令联合使用,ENTRYPOINT用于指定固定命令,而CMD设置默认参数(这个参数是可变的,根据用户输入的参数而决定)

 
 
 

总结:ENTRYPOINT用来写固定的命令,CMD用来传参,将来可以将java项目的固定命令(java -jar)写在ENTRYPOINT中(ENTRYPOINT[“java”, “-jar”] ,而jar包名字可以当作参数传进来(CMD[“xxx.jar”])。


1.准备springboot项目,准备完毕测试成功,然后将该项目打包成jar包
2.将可运行项目的jar包放入linux虚拟机中

2.1.1 编写Dockerfile

 

2.1.2 构建镜像

 
 
在root用户下创建一个demo的文件夹,要求改文件夹下要有 Dockerfile文件和项目的jar包文件
构建成功

2.1.3 运行镜像

 
 
运行成功,项目正在运行

2.1.4 查看项目部署是否成功

 
2.1.4.1 查看虚拟机IP地址
2.1.4.2 查看springBoot项目接口
2.1.4.3 成功访问hello接口
2.1.4.4 查看项目日志
部署成功

还有一种使用IDEA SFTP远程连接直接可以项目的jar包放入linux虚拟机中、编写Dockerfile文件(还自带提示,前提是安装了Dockerfile插件)

2.2.1 创建一个springBoot的项目,创建时只需勾选web依赖(目录结构如下)

2.2.2 安装Docker插件

2.2.2 进行SFTP连接虚拟机或者是自己的个人服务器

SFTP连接至虚拟机的root目录成功

2.2.3 将springboot项目生成jar包

打开IDEA左下角的Terminal 执行如下命令
mvn package


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号