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

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

  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.启动画面确认
在这里插入图片描述

相关文章:

  • BI零售数据分析,告别拖延症,及时掌握一线信息
  • webpack + vite 打包优化
  • RPA除了和OCR、NLP技术结合,还能和什么技术结合?
  • 【数据分析】上市公司半年报数据分析
  • react-markdown支持83版本的Chrome,解决Object.hasOwn is not a function问题
  • 基于JAYA算法的无人机航迹规划-附代码
  • Linux命令(110)之umask
  • uniapp如何使用mumu模拟器
  • 【设计模式】第24节:行为型模式之“模板方法模式”
  • Jenkins项目部署
  • 医学AI智能导诊系统源码
  • NB-IOT的粮库挡粮门异动监测装置
  • 【设计模式之原型模式 】– C++
  • <多线程章节八> 单例模式中的饿汉模式与懒汉模式的讲解,以及懒汉模式中容易引起的Bug
  • 13.7性能测试工具(LoadRunner)(简单扫盲)
  • Android Studio:GIT提交项目到远程仓库
  • Android 控件背景颜色处理
  • django开发-定时任务的使用
  • in typeof instanceof ===这些运算符有什么作用
  • Laravel5.4 Queues队列学习
  • Linux链接文件
  • MySQL QA
  • Netty源码解析1-Buffer
  • Node项目之评分系统(二)- 数据库设计
  • PAT A1092
  • Python_OOP
  • Vue.js源码(2):初探List Rendering
  • 创建一种深思熟虑的文化
  • 手写双向链表LinkedList的几个常用功能
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 国内开源镜像站点
  • #13 yum、编译安装与sed命令的使用
  • #pragam once 和 #ifndef 预编译头
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三)Honghu Cloud云架构一定时调度平台
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .“空心村”成因分析及解决对策122344
  • .NET gRPC 和RESTful简单对比
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET命令行(CLI)常用命令
  • /bin/rm: 参数列表过长"的解决办法
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [20170728]oracle保留字.txt
  • [Android 13]Input系列--获取触摸窗口
  • [Angular] 笔记 6:ngStyle
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [BZOJ3223]文艺平衡树
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测