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

背景

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

思路

1、编写dockerfile镜像镜像

  • 生成镜像需要具备jdk的基础环境
  • dockerfile需要支持参数传递
  • 在构建镜像和启动容器的时候能够支持文件路径挂载

2、构建镜像

3、执行镜像生成容器

4、启动容器

5、查看容器运行日志

 编写dockerfile

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

记录备查 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值