(三)docker:Dockerfile构建容器运行jar包

news/2023/12/1 9:18:53
  1. 目录结构以及准备的文件
├── dockerfile
│   ├── Dockerfile
│   ├── application.properties
│   ├── demo.jar
│   └── jdk-17.0.9-linux-x64.tar.gz

2.Dockerfile内容

FROM ubuntu:latest
# JDK存放处
ENV JAVA_DIR=/home
# 拷贝本地jdk到容器home目录下
COPY ./jdk-17.0.9-linux-x64.tar.gz $JAVA_DIR/
# 拷贝本地的java jar包到home目录下
COPY ./demo.jar $JAVA_DIR/
# 拷贝本地的配置文件到home目录下
COPY ./application.properties $JAVA_DIR/
# 进入home目录,解压压缩包,重命名,授予执行权限
RUN cd $JAVA_DIR \ 
&& tar -xf ./jdk-17.0.9-linux-x64.tar.gz \ 
&& mv jdk-17.0.9+8 jdk17 \
&& chmod 775 $JAVA_DIR/demo.jar
# 指定java所在目录 在linux里是export
ENV JAVA_HOME=$JAVA_DIR/jdk17
# 把java的路径设置到path里
ENV PATH=$PATH:$JAVA_HOME/bin
# java jar包启动,指定配置文件,当数据库改变时,可以通过docker cp ./application.properties d74cfda839f6:/home/# application.properties将需要的配置文件拷贝到容器里
ENTRYPOINT ["java","-Dspring.config.location=/home/application.properties", "-jar", "/home/demo.jar"]

3.构建镜像

docker run --name appv1 -d app:v1

4.查看生成镜像

sixdog@sixiaodong jarExcute % docker images
REPOSITORY        TAG         IMAGE ID       CREATED         SIZE
app               v1          31ad2f4bba78   9 minutes ago   655MB

5.创建并运行容器

docker run --name app -p 8081:8081 -d app:v1

6.查看创建的容器

sixdog@sixiaodong jarExcute % docker ps -a                                           
CONTAINER ID   IMAGE                       COMMAND                   CREATED         STATUS                      PORTS                               NAMES
d74cfda839f6   app:v1                      "java -Dspring.confi…"   7 minutes ago   Up 7 minutes                0.0.0.0:8081->8081/tcp              app

7.启动画面确认
在这里插入图片描述


http://www.ppmy.cn/news/1186556.html

相关文章

女神联盟2攻略,女神联盟2-GM红将全免

女神联盟2攻略:前期过渡阵容建议: 在女神联盟2-GM红将全免的初期玩法中,资源的获取是有限的,因此玩家需要合理运用搭配,避免浪费。同时在有限的资源中与敌人竞争资源需要进行头脑对决。首先,游戏中的硬通货…

Android-Framework 高通865 虚拟化添加开机自启脚本

一、环境 高通865虚拟化 Android 10 二、情景 添加开机自启脚本和保活功能 三、具体实现 3.1 vendor/vxxxxters/vir-dev/copy.mk #xhd PRODUCT_COPY_FILES vendor/vxxxters/vir-dev/bin/xhd:vendor/bin/xhd 3.2 vendor/thundersec/source/container/android/rootfs/vend…

搭建MyBatis

文章目录 1.创建Maven 工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能核心配置文件详解1.这里实现了jdbc.properties jdbc.properties文件 默认的类型别名MyBatis的增删改查 1.创建Maven 工程 打包方式:jar…

【JVM】类的声明周期(加载、连接、初始化)

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、类的声明周期(加载阶段…

英语——分享篇——常用人物身份

常用人物身份 家庭成员类 father 父亲 mother 母亲 grandmother(外)祖母 grandfather(外)祖父 son 儿子 daughter 女儿 uncle 叔叔,舅舅 aunt 婶母,舅母 brother 兄弟 sister 姐妹 nephew 侄子 niece…

HC32M120时钟配置内部时钟为48MHz

HC32M120 时钟比较简单,外部时钟最高只支持20MHz,并且没有PLL,想要48M时钟只能通过内部HRC时钟配置,经过一番研究发现可以直接在hc32m120_icg.h中配置上电时钟为48MHz即可,如果不配置直接使用CLK_HRCInit(CLK_HRC_ON, …

Go语言:post方式发送带有form-data参数的http请求

一、 const (http_address "http://yourIP:8080/****" )// 用url.values方式构造form-data参数 formValues : url.Values{} formValues.Set("first",firstData) formValues.Set("second",secondData) formDataStr : formValues.Encode() formD…

16、SpringCloud -- 常见的接口防刷限流方式

目录 接口防刷限流方式1:隐藏秒杀地址需求:思路:代码:前端:后端:测试:总结:方式2:图形验证码1、生成图形验证码需求:思路:代码:前端:后端:测试:2、校验验证码需求:思路:代码:

Python语言: 切片的使用

切片的本质:通过切片来截取指定的元素,形成一个新的容器。 切片的具体阐释: 此切片非切片面包的切片,而是python语言中的切片。切片:顾名思义,就是把整块的东西分割开来。python语言中的切片是把一个容器截…

怎么看电脑有几个cpu?还有cpu是几核的?

一、怎么查看电脑有几个cpu 电脑CPU是电脑的核心,CPU是中央处理器,是电脑进行线程调度的关键,可以通过查看电脑CPU性能个数可以判定一个电脑的性能。今天小编介绍下如何查看电脑CPU个数。 简单的方式直接查看CPU个数。启动电脑后,…

【QT】鼠标常用事件

新建项目 加标签控件 当鼠标进去,显示【鼠标进入】,离开时显示【鼠标离开】 将QLable提升成自己的控件,然后再去捕获 添加文件 改继承的类名 提升类 同一个父类,可以提升 效果 现在代码就和Qlabel对应起来了。 在.h中声明&…

k8s.1.28.x空间预留,过期镜像删除

CPU和内存预留配置 使用 kubelet 的配置文件中指定 kube-reserved 字段 在 kubeadm init 命令的参数文件中指定 kube-reserved 字段 使用 kubelet 的配置文件在 kubelet 的配置文件中,可以通过指定 kube-reserved 字段来预留节点的空间。kube-reserved 字段是一个对…

立哥尖端技术-Wifi室内定位方法

1.确定通过WiFi进行语音通话的目标终端对应的目标用户标识和目标通话时间; 根据所述目标用户标识和所述目标通话时间,获取所述目标终端接入蜂窝网时的至少 两个第一位置信息,以及对应的目标接入时间; 根据所述至少两个第一位置…

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…

程序员转项目经理有多难?我做了这些

序员转型项目经理难得不是职位上的转变,而是思维角度上的转换。程序员怎么样才能转型成功为一名项目经理呢? 程序员应克服的障碍 程序员与项目经理之间,往往有一条鸿沟。对技术钻研越深的程序员,这条鸿沟可能越大。这是由程序员的性格特征决…

One-to-N N-to-One: Two Advanced Backdoor Attacks Against Deep Learning Models

One-to-N & N-to-One: Two Advanced Backdoor Attacks Against Deep Learning Models----《一对N和N对一:针对深度学习模型的两种高级后门攻击》 1对N: 通过控制同一后门的不同强度触发多个后门 N对1: 只有当所有N个后门都满足时才会触发…

分布式:一文吃透分布式锁,Redis/Zookeeper/MySQL实现

目录 一、项目准备spring项目数据库 二、传统锁演示超卖现象使用JVM锁解决超卖解决方案JVM失效场景 使用一个SQL解决超卖使用mysql悲观锁解决超卖使用mysql乐观锁解决超卖四种锁比较Redis乐观锁集成Redis超卖现象redis乐观锁解决超卖 三、分布式锁概述四、Redis分布式锁实现方案…

基于纵横交叉算法的无人机航迹规划-附代码

基于纵横交叉算法的无人机航迹规划 文章目录 基于纵横交叉算法的无人机航迹规划1.纵横交叉搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用纵横交叉算法来优化无人机航迹规划。 …

Redis快速上手篇七(集群-一台虚拟机六个节点)

​​​​​​http://t.csdnimg.cn/S0NpK与上篇六个虚拟机配置基本一样有不懂可以看上篇配置实例 集群搭建 根据上篇文章,本篇只着重于小方面的配置差别 配置集群一般不要设置密码 1.搭建一台虚拟机后再安装目录下新建文件夹 redis_cluster 2.在文件夹内创建六个文…

Arduino驱动ME007-ULA防水测距模组(超声波传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 3.1、读取串口数据
最新文章