当前位置: 首页 > article >正文

Dockerfile 构建java镜像并运行部署java项目

目录

1. 前提准备

2.  什么是Dockerfile

3. 步骤

3.1. 创建目录

3.2. 编写dockerfile文件

3.3. 构建镜像

3.4. 运行容器

3.5. 验证

4. 总结 


1. 前提准备

(1) 准备一个jar打包文件,已为大家准备(我这里的包名为 app.jar)

资源链接,点我下载

(2) 已经下载安装docker如果未安装,点击下面的链接查看如何安装。

CentOS7 docker安装教程

(3) 工具xshell(连接虚拟机服务器的终端工具)、xftp(本机和服务器文件传输)

2.  什么是Dockerfile

Dockerfile 是一个文本文件,它包含了用于构建 Docker 镜像的一系列指令。通过dockerfile,你可以定义应用程序的运行环境,包括操作系统、依赖库、配置文件以及启动命令等。这使得 Docker 镜像可以被一致地构建和部署,确保了开发、测试和生产环境之间的兼容性。

通俗点来讲,Dockerfile 就像是一份“食谱”,它告诉 Docker 如何一步一步地准备一个特定的运行环境。

想象一下,你想要制作一款特别的蛋糕。你需要知道:

用什么材料(比如面粉、鸡蛋、糖)。

怎么混合这些材料(比如先打蛋,再加糖,最后混入面粉)。

最后怎么烘焙(比如烤箱温度和时间)。

同理,

Dockerfile告诉 Docker:

基础环境:从哪里开始(就像选择是做巧克力蛋糕还是抹茶蛋糕的基础配料)。

添加文件:把哪些文件放进这个环境中(就像加入你自己的配料,比如水果或坚果)。

安装工具:需要安装什么软件(比如如果要做装饰,可能需要买一些额外的工具)。

配置设置:如何设置这个环境(比如设定烤箱温度)。

启动命令:最后运行什么命令来启动你的应用程序(就像最后把蛋糕放进烤箱)。

3. 步骤

3.1. 创建目录

创建一个appjava目录,将jar包放入文件夹中,并且创建一个dockerfile

3.2. 编写dockerfile文件

FROM openjdk:17

LABEL author=cheng

COPY app.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

 说明:

(1) 指定基础镜像为 openjdk:17 这是官方的 OpenJDK 17 镜像,包含了 JDK 和 JRE,适用于运行 Java 应用程序。

(2) LABEL标签用于描述镜像的元数据,这里指定作者信息。

(3) 将宿主机上的 app.jar 文件复制到镜像中的 /app.jar 路径。

(4) 声明容器运行时监听的端口为 8080。

(5) 设置容器启动时执行的命令为 java -jar /app.jar

3.3. 构建镜像

docker build -f dockerfile -t myjavaapp .

成功后查看镜像

注意:

(1) -f 参数指定了要使用的 dockerfile 文件的路径和名称。

(2) -t 参数为构建的镜像指定一个名称。

(3) 目录最后的一个点不能少,这个点(.) 代表./(当前目录下)

3.4. 运行容器

docker run -d -p 8080:8080 myjavaapp

容器启动

3.5. 验证

游览器输入 服务器ip+端口8080,如下图所示就代表启动成功。

4. 总结 

看到这里,如果你对dockerfile的概念还有点模糊,可以这样为你解释,假设你有一个 Java 应用程序,你想把它打包成一个可以在任何地方运行的“盒子”。你可以写一个dockerfile 来描述怎么做。

文章的过程大概过程就是在包含 dockerfile 文件和 app.jar 包的目录中执行以下命令来构建镜像。jar 包的下载链接和docker安装教程都已经放在了上面。

希望这篇文章对你有用😀。


http://www.kler.cn/a/501139.html

相关文章:

  • 中等难度——python实现电子宠物和截图工具
  • Java 将RTF文档转换为Word、PDF、HTML、图片
  • 深度定制:Embedding与Reranker模型的微调艺术
  • Centos8部署Redis Cluster
  • 浅谈云计算09 | 服务器虚拟化
  • Linux WEB漏洞
  • uniapp中rpx和upx的区别
  • Go语言中http.Transport的Keep-Alive配置与性能优化方法
  • excel前缀和(递增求和)
  • 第2章 市场走势的分类与组合
  • 基于 GEE 下载 2000-2023 年 LANDSCAN 1 km 人口栅格数据
  • 大模型笔记:KV cache
  • WPF ——开源MVVM模式框架简介
  • 【算法日记】从零开始认识动态规划(一)
  • Java高频面试之SE-11
  • 【Rust】结构体定义域实例化
  • Golang环境配置on Macbook Air M2
  • 安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?
  • 蓝桥杯历届真题 #分布式队列 (Java,C++)
  • 未来量子计算技术会如何影响音频DSP的发展?
  • 分布式光纤传感器行业:市场潜力巨大,技术革新引领未来
  • 【芯片封测学习专栏 -- D2D 和 C2C 之间的区别】
  • 义乌购的反爬虫机制怎么应对?
  • 音频数据增强:提升音频信号质量的多种技术
  • STM32Flash读写BUG,坑—————4字对齐
  • 《拉依达的嵌入式\驱动面试宝典》—操作系统篇(六)