如何使用Docker打包构建Java项目然后部署发布?

前言

今天我们来讲下如何使用Docker打包构建Java项目并且完成部署发布。

前期准备,需要安装好docker。

以及一个需要安装好Maven的镜像,可以参考下面的文章。

构建一个包含mvn命令的Java 17基础镜像-CSDN博客

一、打包构建Java项目镜像

1、创建Java项目目录,执行如下命令。

mkdir -p /docker/hello/
cd /docker/hello/

2、创建SpringBoot代码。

3、编写Dockerfile文件,内容如下。

vim Dockerfile
# 使用Alpine Linux搭配OpenJDK 17含Maven的版作为打包镜像
FROM ayzen/openjdk:17-jdk-alpine as builder# 设置工作目录
WORKDIR /www# 复制项目源码和构建脚本到容器工作目录
COPY . /www# 在容器内执行Maven,生成可执行jar文件
RUN mvn clean package -DskipTests# 新建一个更小的基础镜像用于运行
FROM openjdk:17-jdk-alpine# 设置工作目录
WORKDIR /www# 将构建阶段产生的jar文件复制到运行阶段的镜像中
COPY --from=builder /www/target/hello.jar /www/hello.jar# 暴露应用端口
EXPOSE 8080# 设置容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "/www/hello.jar"]

4、构建镜像,执行如下命令。

docker build -t ayzen/hello .

构建正常情况会返回如下内容。

5、至此,Java项目的镜像已构建完成。

二、部署发布Java项目

1、启动Java项目容器,执行如下命令。

docker run -d -p 8080:8080 ayzen/hello

2、测试验证请求,执行如下命令。

curl http://127.0.0.1:8080/hello

正常返回说明Java项目服务已正常运行。

3、至此,Java项目已部署发布完成。

总结

今天讲了如何使用Docker打包构建Java项目并且发布的内容,步骤也比较简单。

1、创建Java项目代码或者拉取Java项目代码,编写Dockerfile文件,构建项目镜像。

2、使用项目镜像运行容器,测试验证服务。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣】300. 最长递增子序列(DFS+DP两种方法实现)

目录 题目传送最长递增子序列[DFS 方法]DFS方法思路图思路简述代码大家可以自行考虑有没有优化的方法 最长递增子序列[DP]方法DP方法思路图思路简述代码方案 题目传送 原题目链接 最长递增子序列[DFS 方法] DFS方法思路图 思路简述 对于序列中的每一个数字只有选择和不选择两…

电脑开机慢怎么办,电脑开机慢解决方法

新电脑呢,开机速度特别快。有很多人会感觉到电脑拿回家以后,一按开机键,六秒七秒,这个电脑就启动起来了,但是用一段时间以后呢,他会明显感觉到这个开机的速度呢,会特别慢,可能从六秒…

OSX-02-Mac OS应用开发系列课程大纲和章节内容设计

本节笔者会详细介绍下本系统专题的大纲,以及每个专题章节的组织结构。这样读者会有一个全局的概念。 在开始前还是在再介绍一下下面这个框架图,因为比较重要,在这里再冗余介绍一下。开发Apple公司相关产品的软件时,主要有两个框架…

kubernetes(K8S)学习(六):K8S之Dashboard图形界面

K8S之Dashboard图形界面 一、Dashboard简介二、k8s安装Dashboard(1)下载Dashboard镜像(可选)(2)根据yaml文件创建资源(3)查看资源(4)生成登录需要的token(5)使用火狐 / 搜狗浏览器访问(个人用的搜狗) 一、Dashboard简介 官网&…

【最新版RabbitMQ3.13】Linux安装基于源码构建的RabbitMQ教程

前言 linux环境 安装方式有三种,我们这里使用源码安装 Linux下rpm、yum和源码三种安装方式简介 个人语雀首发教程:https://www.yuque.com/wzzz/java/kl2zn22b42svsc6b csdn地址: https://blog.csdn.net/u013625306/article/details/137151862 安装版本…

Netty核心原理剖析与RPC实践6-10

Netty核心原理剖析与RPC实践6-10 06-粘包拆包问题:如何获取一个完整的网络包 本节课开始我们将学习 Netty 通信过程中的编解码技术。编解码技术这是实现网络通信的基础,让我们可以定义任何满足业务需求的应用层协议。在网络编程中,我们经常…

java 视频使用FFmpeg添加水印以及头部尾部

在Java中,你可以使用FFmpeg库来给视频添加水印和头部尾部。FFmpeg是一个开源的跨平台音视频处理工具,提供了丰富的命令行选项,可以满足各种视频处理的需求。 添加水印 以下是一个使用FFmpeg添加水印的简单示例: import com.github.kokorin…

3D人体姿态估计项目 | 从2D视频中通过检测人体关键点来估计3D人体姿态实现

项目应用场景 人体姿态估计是关于图像或视频中人体关节的 2D 或 3D 定位。一般来说,这个过程可以分为两个部分:(1) 2D 视频中的 2D 关键点检测;(2) 根据 2D 关键点进行 3D 位姿估计。这个项目使用 Detectron2 从任意的 2D 视频中检测 2D 关节…

vue2处理跨域问题

vue中访问springboot中的RestController中的服务 &#xff08;vue.config.js不生效-CSDN博客&#xff09; 1、创建项目 使用vue init webpack my_frontend 创建vue项目 在HelloWorld.vue文件中添加内容&#xff1a; HelloWorld.vue 文件内容&#xff1a; <template>&…

LLMs之Mistral:Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略

LLMs之Mistral&#xff1a;Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;Mistral AI首个7B模型发布于2023年9月&#xff0c;在基准测试中超越Llama 2 13B&#xff0c;一下子声名大振。Mistral 7B v0.2对应的指令调优版本Mistral-7B-Instruct-v0…

2024年导游资格证考试真题题库

2024年导游资格证考试真题题库 一、单选题 1.&#xff08;单选题&#xff09;1845年&#xff0c;托马斯库克组织350人赴利物浦旅游途中第一次聘请了地方导游游览的景点是&#xff08;&#xff09;。 A.达拉谟城堡 B.爱德华国王城堡 C.圣乔治城堡 D.卡那封城堡 答案&…

JS数组练习

查找、筛选 Code <script>// 筛选>10的数组中元素var num1 [10, 2, 5, 0, 11, 121, 3, 0];var num2 [];var j 0;for (var i 0; i < num1.length; i) {// 法1// if (num1[i] > 10) {// num2[j] num1[i];// j;// }// 法2// if (num1[i] > 10) {/…

WebView的使用与后退键处理-嵌入小程序或者 H5 页面

在使用 WebView 嵌入小程序或者 H5 页面时&#xff0c;通常会涉及到处理后退键的操作。在 Android 平台上&#xff0c;可以通过 WebView 的相关方法来实现后退键的处理。你可以按照以下步骤来实现&#xff1a; 在 Activity 或 Fragment 中找到 WebView 控件&#xff0c;并为其…

目前现货黄金行情技术分析

目前行情黄金可以投资吗&#xff1f;不论是黄金价格怎么波动&#xff0c;总是有投资者问这个问题&#xff0c;原因是他们搞不清现状&#xff0c;弄不懂当前的市场形势&#xff0c;对于技术分析和基本分析的方法也不甚了解&#xff0c;因此缺乏对未来行情判断的能力。下面我们就…

环境温度对测量平板有什么影响

环境温度可以对测量平板有影响。温度变化可以导致平板的尺寸发生变化。根据热膨胀原理&#xff0c;当环境温度升高时&#xff0c;平板的尺寸会扩大&#xff1b;当环境温度降低时&#xff0c;平板的尺寸会缩小。这种尺寸变化可能会导致测量结果的误差。因此&#xff0c;在测量平…

AI计算平台设计方案:901-基于3U VPX的图像数据AI计算平台

一、产品概述 设备基于3U VPX的导冷结构&#xff0c;集成FPGA接口预处理卡&#xff0c;GPU板卡、飞腾ARM处理卡&#xff0c;实现光纤、差分电口或者Camera link的图像接入&#xff0c;FPGA信号预处理&#xff0c;GPU AI计算&#xff0c;飞腾ARM的采集管理存储。 二、系统…

网安播报 | GitHub遭遇严重的供应链“投毒”攻击,影响GG平台

1、GitHub遭遇严重的供应链“投毒”攻击&#xff0c;影响GG平台 多年来&#xff0c;威胁行为者一直在使用多种策略、技术和程序 &#xff08;TTP&#xff09;&#xff0c;包括劫持 GitHub账户、分发恶意 Python 包、使用虚假的 Python 基础设施以及社会工程进行攻击&#xff0c…

Nginx的预定义变量

变量一览 NGINX 提供了一系列预定义变量&#xff0c;可以在配置文件中使用。这些变量提供了关于请求、连接、服务器等信息的访问。以下是一些常用的预定义变量&#xff1a; $arg_PARAMETER: GET 请求参数中的指定参数值。 $args: 请求中的参数字符串。 $binary_remote_addr: …

jupyter lab使用虚拟环境

python -m ipykernel install --name 虚拟环境名 --display-name 虚拟环境名然后再启动jupyter lab就行了

计算机视觉的应用25-关于Deeplab系列语义分割模型的应用场景,以及空洞卷积的介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用25-关于Deeplab系列语义分割模型的应用场景&#xff0c;以及空洞卷积的介绍。Deeplab是Google研发的一系列深度学习模型&#xff0c;主要用于图像语义分割任务&#xff0c;其在众多应用场景中展现出…