一个jdk镜像通吃所有需要部署的应用,生成多个容器

2024-02-23 04:44

本文主要是介绍一个jdk镜像通吃所有需要部署的应用,生成多个容器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

生产过程中,一个服务制作一个镜像,有点太占用空间,由此,考虑设置一个镜像能支持多个服务的部署,通过文件挂载的模式,通过启动容器时候传递参数实现该需求。

 编写dockerfile

# 集成某个初始镜像
FROM openjdk:11-jre-slim
#设置容器启动时Springboot启动参数--默认值为空
ENV JAVA_OPTS=
# 设置build-arg key=value build参数
# ARG params=build时指定的参数
# 设置jar的路径及名称
ENV JAR_NAME=
## 创建文件路径
RUN mkdir -p /ssss
## 指定工作路径
WORKDIR /ssss
## 拷贝文件数据--本场景不需要该命令
#COPY *.jar /ssss/$JAR_NAME
## 声明要使用的端口
EXPOSE 8080
## 启动jar 脚本
CMD java -jar $JAVA_OPTS $JAR_NAME
#ENTRYPOINT ["sh" "-c" "java -jar $JAVA_OPTS /apps/app.jar"]

构建镜像

## -t 打上标签 .表示使用当前路径下的Dockerfile
docker build -t test .

 出现successfully表示成功了,中间出现的语法构建错误问题,根据错误提示,基本上都能解决。

## 查看当前所有的镜像系想你
docker images

  

 该test镜像就是后面运行出各个容器的基础,仅有这一个镜像

启动容器-(test-one)

进入需要挂载和启动的Springboot路径,执行以下命令 ,执行第一个需要运行的Springboot服务

## -d 后台运行
## --name 为容器起个名称
## -v 文件路径挂载
## -e 是设置dockerfile中设置的环境变量 --多个变量可以使用多个-e标签
## -p 端口映射 宿主机器端口:容器端口
## `pwd`为当前路径,笔者当前的springboot jar路径为 /data/docker/server/server1.jar
##  最后面test为镜像名称
docker run -d --name test-one -v `pwd`:/server1/ -e JAR_NAME=/server1/server1.jar -e JAVA_OPTS="-Dserver.port=10008" -p 10008:10008 test

 

启动容器-(test-2)

进入需要挂载和启动的Springboot路径,执行以下命令 ,执行第二个需要运行的Springboot服务

## -d 后台运行
## --name 为容器起个名称
## -v 文件路径挂载
## -e 是设置dockerfile中设置的环境变量 --多个变量可以使用多个-e标签
## -p 端口映射 宿主机器端口:容器端口
## `pwd`为当前路径,笔者当前的springboot jar路径为 /data/docker/server/server2.jar
##  最后面test为镜像名称
docker run -d --name test-one -v `pwd`:/server/ -e JAR_NAME=/server/server2.jar -e JAVA_OPTS="-Dserver.port=10008" -p 10009:10008 test

 查看容器是否在运行

docker ps

查看接口文档,验证容器是否启动成功 

 

 至此,支持多个jar应用部署的镜像制作完整,应用改变jdk版本只需要将该镜像的jdk修改即可,一下是可能会使用到的docker命令

## 搜索镜像
docker search openjdk
## 列出当前所有镜像
docker iamges
## 列出所有容器
docker ps -a 
## 列出所有运行容器
docker ps
## 删除所有none标签的镜像
docker rmi $(docker images| grep none | awk '{print $3}')## 通过已知镜像查看镜像的dockerfile---由此得到的dockerfile并不准
docker history test --format "{{.CreatedBy}}" --no-trunc

记录备查 

这篇关于一个jdk镜像通吃所有需要部署的应用,生成多个容器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737550

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#