mvn 打包jar包。 Docker 部署 jar 包程序

news2024/11/15 23:44:10

默认你已经安装了jdk和maven 并且配置了环境变量. 这里贴出自己的环境配置(mac)

# Maven3.6.3
export M2_HOME=/Users/cc/maven3.6.3/apache-maven-3.6.3
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

# ======================= java8 ====================
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin

一、pom引入打包依赖 . 然后 Reaload

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>

    </plugins>
</build>

二、打包

cd 到项目跟目录
执行 mvn clean package

会在target 下生成两个文件:

项目名-0.0.1-SNAPSHOT.jar
项目名-0.0.1-SNAPSHOT.jar.original

三. 执行 查看jar是否能跑起来

java -jar 项目名-0.0.1-SNAPSHOT.jar

服务器上 docker 部署jar包

默认你服务上已经安装了docker

最好建一个项目专属目录。 我的 /root/otter-exam

Dockerfile文件、jar包、application.yml文件、run.sh启动脚本文件最好都在 /root/otter-exam 具体里面层级可自己划分

一、编写Dockerfile文件

# 基础镜像使用java
FROM openjdk:8-jdk-alpine
# 作者 名字 邮箱 (可以不写)
MAINTAINER jeffcail <cljcailianjie@163.com>
# 将jar包添加到容器中并更名为app.jar
ADD otter-exam-0.0.1-SNAPSHOT.jar exam.jar

# 运行端口
EXPOSE 8099
# 启动命令,加载指定路径的配置文件
ENTRYPOINT ["java","-jar","exam.jar","--spring.config.location=application.yml"]

## 设置所属时区
ENV TZ=Asia/Shanghai
## 创建本地和容器的连接
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

  • ADD otter-exam-0.0.1-SNAPSHOT.jar exam.jar 将jar包添加到容器中,也可以使用 COPY

  • “–spring.config.location=application.yml” 加上指定的配置文件。比如 一个镜像多个客户端公用

二、编写run.sh脚本

脚本的作用。节省手动操作。比如每次发布,都要先打包镜像、停止容器、删除容器、删除镜像、运行镜像。

使用脚本一键执行,让脚本来完成这些动作

#!/usr/bin/env bash

echo "停止容器"

docker stop otter-exam-0.0.1

echo "删除容器"

docker rm otter-exam-0.0.1

echo "删除旧的镜像"

docker rmi otter-exam-0.0.1

echo "开始构建镜像"

docker build -t otter-exam-0.0.1 .

echo "开始运行镜像"

docker run -d --restart=always --name otter-exam-0.0.1 -p 8099:8099 \
  -v /root/otter-exam/application.yml:/application.yml \
  -v /etc/localtime:/etc/localtime \
  otter-exam-0.0.1:latest \

docker logs -f otter-exam-0.0.1 | sed '/Started otter-exam-0.0.1 Application/q'

echo ""
  • docker build -t otter-exam-0.0.1 . 打包镜像
  • docker run -d --restart=always --name otter-exam-0.0.1 -p 8099:8099 -v /root/otter-exam/application.yml:/application.yml -v /etc/localtime:/etc/localtime otter-exam-0.0.1:lates 运行打包好的镜像,并把配置文件挂载到容器中,Dockfile中 --spring.config.location=application.yml 就可以使用容器中的配置文件
  • docker logs -f otter-exam-0.0.1 | sed '/Started otter-exam-0.0.1 Application/q'启动之后打印日志

三、 云服务器记得在安全组开放对应端口 这里 8099

四、 部署好了之后验证是否能访问

这里访问这套程序的swagger文档地址

在这里插入图片描述

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

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

相关文章

表白墙的实现【前后端交互】

目录 一、Servlet API 详解 1. HttpServletRequest 1.1 HttpServletRequest 方法 1.2 getParameter 2.HttpServletResponse 2.1 HttpServletResponse 方法 2.2 代码示例: 设置状态码 2.3 代码示例: 重定向 二、表白墙 1.准备工作 2.约定前后端交互接口 2.1 接口一…

项目引入Spring Security的参考步骤token

后端&#xff1a; 1、在数据库中创建t_user用户表&#xff0c;参照建表SQL。 2、pom文件中引入Spring Security依赖、JWT依赖&#xff08;复制粘贴即可&#xff09; <!--security--> <dependency> <groupId>org.springfr…

全志V3S嵌入式驱动开发(pwm驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 pwm驱动也是常见的一种驱动方式。常见的pwm&#xff0c;其实就是一组方波&#xff0c;方波中的高低电平之比称之为空占比。通过调节这个空占比&…

前端学习--ES6模块化与异步编程高级用法

一、ES6模块化 1.1 概念与规则 ES6 模块化规范是浏览器端与服务器端通用的模块化开发规范 ES6 模块化规范中定义&#xff1a; 每个 js 文件都是一个独立的模块导入其它模块成员使用 import 关键字向外共享模块成员使用 export 关键字 1.2 在node.js体验es6模块化 配置如下&…

【问题】常见问题解决方法

记录在项目运行中遇到的问题&#xff0c;和常用的软件安装包 文章目录 安装包下载第一章&#xff1a;运行C/C小白运行须知1.DevC运行&#xff08;最简单&#xff0c;推荐&#xff09;2.Visual Studio 运行3.VC运行 第二章&#xff1a;运行C#项目1.VS环境2.打开C#项目启动失败&a…

LiteDram仿真验证(二):仿真中,DDR3初始化问题

目录 前言一、讨论1、[init_done never goes to 1 in simulation #145](https://github.com/enjoy-digital/litedram/issues/145)2、[Add ECP5 support to standalone core generator #106](https://github.com/enjoy-digital/litedram/issues/106)3、[Help generating DDR3 Ve…

【unity插件】2d切割破坏插件-Smart Slicer 2D

文章目录 效果1.切割2.破坏3.创建源码使用1.导入插件2.摄像机3.新建地面4.新建切割刀5.新建切割食物6. 运行即可不同slicer Type的切割刀类型测试1.线性2.Complex3.点4.多边形5.explode6.创建效果 1.切割

华为OD机试之数列描述(Java源码)

数列描述 题目描述 有一个数列a[N] (N60)&#xff0c;从a[0]开始&#xff0c;每一项都是一个数字。数列中a[n1]都是a[n]的描述。其中a[0]1。规则如下&#xff1a; a[0]:1a[1]:11(含义&#xff1a;其前一项a[0]1是1个1&#xff0c;即“11”。表示a[0]从左到右&#xff0c;连续出…

Java简单实现短信验证登录(Session、Redis)

前端设计 <div class"login-form"><div style"display: flex; justify-content: space-between"><el-input style"width: 60%" placeholder"请输入手机号" v-model"form.phone" ></el-input><e…

winform的RichTextBox控件追加文本及图片(实现笔记录入和笔记搜索功能)

在工作中&#xff0c;在工作中&#xff0c;难免有一些笔记要记录下来&#xff0c;方便后续工作中快速找到。之前用的是共享文档来记录的&#xff0c;但有一个缺点就是随着写的内容越来越多&#xff0c;打开变得很慢&#xff0c;搜索更加慢&#xff0c;网络不好的时候&#xff0…

Redis的常用数据结构之有序集合类型

有序集合的特点 集合中的元素有序&#xff0c;不可以重复与列表通过索引实现有序不同&#xff0c;有序集合实现有序的方式是通过给每一个集合元素设置一个分数score字段作为排序依据集合中的元素不能重复&#xff0c;但是score可以重复无法通过某一个下标的方式获取元素单个集…

大数据:spark环境搭建,local模式,standalone模式,zookeeper standby,yarn模式

大数据&#xff1a;spark环境搭建&#xff0c;local模式 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;or…

chatgpt赋能python:Python列表倒序排列

Python列表倒序排列 介绍 Python是一种强大的编程语言&#xff0c;经过多年的发展&#xff0c;它已成为最受欢迎的编程语言之一。Python列表是一个非常有用的数据结构&#xff0c;它允许您将多个项目组合在一起&#xff0c;并可以轻松地对它们进行排序和操作。本篇文章将介绍…

Cubase12没有声音解决办法(Windows 11专用)

本文章由CSDN 不想加班呀 原创&#xff0c;转载请注明出处。 作者首页&#xff1a;不想加班呀的博客_CSDN博客-Python爬虫,电脑小知识,程序员剪视频领域博主 目录 前言 解决办法 第一步&#xff08;进入系统硬件和声音设置界面&#xff09; 第二步&#xff08;在声音设置中…

【正点原子STM32连载】 第二十五章 TFT-LCD(MCU屏)实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十…

05.JavaWeb-Servlet

1.Servlet基础 1.1 Servlet概述 用于处理客户端传来的HTTP请求&#xff0c;并返回一个响应&#xff08;特点&#xff1a;方便、跨平台、灵活性和可扩展性&#xff09; 1.2 Servlet开发入门 1.2.1 Servlet接口及实现类 1.最基本的接口是javax.servlet.Servlet&#xff0c;Ser…

高完整性系统工程(十二):Separation Logic for Automated Verification

目录 1. INTRODUCTION TO SEPARATION LOGIC 分离逻辑 1.1 霍尔推理&#xff08;Hoare Reasoning&#xff09; 1.2 堆指针的影响 1.3 全局和局部推理&#xff08;Global and Local Reasoning&#xff09; 1.4 组合推理&#xff08;Compositional Reasoning&#xff09; 1.…

SpringBoot通过加装外部JAR包中的类实现业务插件功能

综合记录一下关于ClassLoader和Spring Bean的动态加载卸载功能 目录 一、需要说明二、总体设计三、具体设计3.1 加载卸载Bean工具类3.2 创建卸载方法3.3 创建加载方法3.4 创建获取具体服务类方法 四、总结 一、需要说明 有一个公共的发送通知的接口&#xff0c;这个接口需要做…

CUDA配置正确,但是torch.cuda.is_available()却是False的解决方案

1.torch.cuda.is_available()返回为False 有时候我们想要使用GPU加速&#xff0c;但是发现CUDA、pytorch都安装好了&#xff0c;且版本也匹配&#xff0c;但是仍然无法使用GPU,显示信息如下&#xff1a; 这时候我们可以看看是不是我们的Pytorch的问题 2.输入下面命令查看pyto…

(学习日记)2023.04.26

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…