建木-自动化部署-dockerfile文件书写-自动化部署jar包完成docker运行镜像-dockerfile书写介绍

  • Post author:
  • Post category:其他


阿丹:

在自动化部署的时候jar包要如何进行部署。就需要通过使用书写dockerfile文件来进行触发的时候执行docker指令来完成镜像的部署以及运行。

什么是dockerFile

  1. dockerfile是自定义镜像的一套规则
  2. dockerfie由

    多条指令构成

    ,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层

dockerfile的书写规则

Dockerfile是用于构建Docker镜像的文本文件。它包含了一系列指令,用于描述如何组织和配置镜像。下面是一些常见的Dockerfile语法和规则:

  1. 每个指令占一行,并以大写字母开头。例如:FROM, RUN, COPY等。

  2. 注释以井号(#)开头。

  3. 指令按照顺序逐行执行,每行的结果都会作为下一行指令的输入。

  4. 可以使用反斜杠()来换行。

  5. 可以使用环境变量(ENV)和构建参数(ARG)来设置在构建过程中使用的值。

  6. 指令可以重复出现,但只有最后一次的结果会被保留。

  7. Dockerfile的第一条指令通常是FROM,指定基础镜像。

  8. 每个指令都会在镜像中创建一个新的中间层(layer),这些中间层可以被重用以提高构建效率。

  9. 使用COPY或ADD指令来将文件从主机复制到镜像中。

  10. 使用RUN指令在镜像中执行命令。

  11. 使用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"]

文件解释:



  1. FROM openjdk:17-ea-slim

    : 使用基于OpenJDK 17 Early Access版本的slim镜像作为基础镜像。


  2. LABEL authors="adn"

    : 添加一个作者标签,值为”adn”。


  3. RUN mkdir "/yunseven"

    : 在容器内创建一个名为”yunseven”的工作目录。


  4. EXPOSE 9202

    : 暴露容器的9202端口,以便可以从外部访问该端口。


  5. WORKDIR "/yunseven"

    : 设置”/yunseven”目录作为登录容器后的默认工作目录。


  6. COPY ./target/yunseven-modules-gen.jar /yunseven/app.jar

    : 将宿主机中

    ./target/yunseven-modules-gen.jar

    文件复制到容器内的

    /yunseven/app.jar

    路径。


  7. VOLUME /yunseven/logs/yunseven-modules-gen

    : 创建一个容器卷,绑定到容器内的

    /yunseven/logs/yunseven-modules-gen

    目录,该目录将在容器运行期间用于存储日志。


  8. CMD ["java","-jar","/yunseven/app.jar"]

    : 在启动容器时运行的默认命令,执行

    java -jar /yunseven/app.jar

    来运行Java应用程序。


总结起来,此代码段使用Docker构建了一个基于OpenJDK 17的镜像,并将Java应用程序的JAR文件复制到容器内的工作目录中。然后,在容器启动时,会运行该JAR文件以启动Java应用程序。该容器会将日志存储在容器卷中,可通过绑定到宿主机的目录来访问。



版权声明:本文为weixin_72186894原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。