阿丹:
   
在自动化部署的时候jar包要如何进行部署。就需要通过使用书写dockerfile文件来进行触发的时候执行docker指令来完成镜像的部署以及运行。
    什么是dockerFile
   
- dockerfile是自定义镜像的一套规则
- 
     dockerfie由
 
 多条指令构成
 
 ,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层
    dockerfile的书写规则
   
Dockerfile是用于构建Docker镜像的文本文件。它包含了一系列指令,用于描述如何组织和配置镜像。下面是一些常见的Dockerfile语法和规则:
- 
每个指令占一行,并以大写字母开头。例如:FROM, RUN, COPY等。 
- 
注释以井号(#)开头。 
- 
指令按照顺序逐行执行,每行的结果都会作为下一行指令的输入。 
- 
可以使用反斜杠()来换行。 
- 
可以使用环境变量(ENV)和构建参数(ARG)来设置在构建过程中使用的值。 
- 
指令可以重复出现,但只有最后一次的结果会被保留。 
- 
Dockerfile的第一条指令通常是FROM,指定基础镜像。 
- 
每个指令都会在镜像中创建一个新的中间层(layer),这些中间层可以被重用以提高构建效率。 
- 
使用COPY或ADD指令来将文件从主机复制到镜像中。 
- 
使用RUN指令在镜像中执行命令。 
- 
使用CMD指令设置容器启动时要执行的默认命令。 
    关于dockerFile一个简单的模版
   
# 设置基础镜像
FROM <base_image>
# 设置作者信息
LABEL maintainer="Your Name <your.email@example.com>"
# 设置工作目录
WORKDIR /app
# 将主机的文件复制到镜像中
COPY . .
# 安装所需的依赖
RUN <command_to_install_dependencies>
# 设置容器启动时要执行的命令
CMD <command_to_run_on_container_startup>
在这个模板中:
- 
 <base_image>
 
 代表你选择的基础镜像,例如
 
 ubuntu
 
 ,
 
 node
 
 , 或者其他适合你项目的镜像。
- 
 LABEL
 
 指令用于提供有关镜像的元数据,比如作者信息等。
- 
 WORKDIR
 
 指令设置镜像中的工作目录。
- 
 COPY
 
 指令将当前目录中的文件复制到镜像中的工作目录。
- 
 RUN
 
 指令用于在镜像中执行命令,例如安装依赖等。
- 
 CMD
 
 指令设置容器启动时要执行的默认命令。
这样就可以在我们自动化部署的时候进行创建镜像以及启动容器。
    
     注意:在书写dockerfile文件的时候一定要进行jar包运行的测试。
    
   
    我这里提供一个我项目中书写的dockerfile文件
   
FROM openjdk:17-ea-slim
LABEL authors="adn"
#创建我的工作目录
RUN mkdir "/yunseven"
#暴露端口
EXPOSE 9202
#创建着陆点 登录进入的目录
WORKDIR "/yunseven"
#复制新的目录运行程序
COPY   ./target/yunseven-modules-gen.jar /yunseven/app.jar
#挂载日志目录
VOLUME /yunseven/logs/yunseven-modules-gen
#运行我的jar包
CMD ["java","-jar","/yunseven/app.jar"]
    文件解释:
   
- 
     
 
 FROM openjdk:17-ea-slim
 
 : 使用基于OpenJDK 17 Early Access版本的slim镜像作为基础镜像。
 
- 
     
 
 LABEL authors="adn"
 
 : 添加一个作者标签,值为”adn”。
 
- 
     
 
 RUN mkdir "/yunseven"
 
 : 在容器内创建一个名为”yunseven”的工作目录。
 
- 
     
 
 EXPOSE 9202
 
 : 暴露容器的9202端口,以便可以从外部访问该端口。
 
- 
     
 
 WORKDIR "/yunseven"
 
 : 设置”/yunseven”目录作为登录容器后的默认工作目录。
 
- 
     
 
 COPY ./target/yunseven-modules-gen.jar /yunseven/app.jar
 
 : 将宿主机中
 
 ./target/yunseven-modules-gen.jar
 
 文件复制到容器内的
 
 /yunseven/app.jar
 
 路径。
 
- 
     
 
 VOLUME /yunseven/logs/yunseven-modules-gen
 
 : 创建一个容器卷,绑定到容器内的
 
 /yunseven/logs/yunseven-modules-gen
 
 目录,该目录将在容器运行期间用于存储日志。
 
- 
     
 
 CMD ["java","-jar","/yunseven/app.jar"]
 
 : 在启动容器时运行的默认命令,执行
 
 java -jar /yunseven/app.jar
 
 来运行Java应用程序。
 
    
     总结起来,此代码段使用Docker构建了一个基于OpenJDK 17的镜像,并将Java应用程序的JAR文件复制到容器内的工作目录中。然后,在容器启动时,会运行该JAR文件以启动Java应用程序。该容器会将日志存储在容器卷中,可通过绑定到宿主机的目录来访问。
    
   
 
