阿丹:
在自动化部署的时候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应用程序。该容器会将日志存储在容器卷中,可通过绑定到宿主机的目录来访问。