(八)jar包镜像的构建以及war包镜像的构建

请按以下顺序阅读

  1. docker命令(镜像+帮助)
  2. docker命令(容器)
  3. docker数据容器卷
  4. Dockerfile基础知识
  5. 自定义mycentos镜像
  6. CMD与ENTRYPOINT的区别
  7. 自定义Tomcat镜像
  8. jar包镜像的构建以及war包镜像的构建
  9. docker的一些常用安装

1. jar包的构建

我们知道,通过doc命令窗口运行jar包的方式是java -jar jar包名,因此,我们可以在Dockerfile文件中配置从而实现在运行镜像的时候就执行这条语句,达到运行项目的目的。
创建Springboot项目;创建User类和UserController类

@Controller
@RequestMapping("user")
public class UserController {

	@RequestMapping("loadAllUser")
	@ResponseBody
	public List<User> loadAllUser(){
		List<User> users = new ArrayList<>();
		for(int i = 1; i <= 10; i++) {
			User user = new User("富贵" + i, 18);
			users.add(user);
		}
		return users;
	}
	
	
}

1.1 创建Dockerfile
在这里插入图片描述
1.2 导入jar包,与Dockerfile同一个目录
在这里插入图片描述1.3 编写Dockerfile文件,基于openjdk:

#基于openjdk:8u181-jdk-alpine
FROM openjdk:8u181-jdk-alpine
#声明工作区
ENV MYPATH /app
WORKDIR $MYPATH
#添加jar包,将当前文件夹的hello.jar重命名为app.jar
ADD hello.jar app.jar
#添加容器卷
VOLUME $MYPATH
EXPOSE 8080
#使用java -jar app.jar去运行
CMD ["java","-jar","app.jar"]

这里添加了容器卷,容器卷的目录就在工作目录下,创建了这个镜像,如果要运行其他的jar包,只需要把jar包重命名为hello.jar,再把jar包导入到工作目录中,直接运行镜像即可
1.4 构建镜像
在这里插入图片描述

1.5 运行镜像
在这里插入图片描述
测试:
在这里插入图片描述
下面我们来实现,更换jar包,不创建新的镜像,这里有点问题,实验了很多天都失败了,但还是先发博客为敬,日后再解决。如有大佬能够解决,不胜感激!

  1. 修改UserController
@RestController
@RequestMapping("user")
public class UserController {

	@RequestMapping("loadAllUser")
	public List<User> loadAllUser(){
		List<User> users = new ArrayList<>();
		for(int i = 1; i <= 10; i++) {
			User user = new User("富贵" + i, 18);
			users.add(user);
		}
		return users;
	}
	
	@RequestMapping(" loadOneUser")
	public User loadOneUser(){
		return new User("富贵", 18);
	}
	
	
}

我们在编写Dockerfile文件时,添加了容器卷,如果我们需要运行其他jar包,可以不创建新的镜像,而直接更换jar包;
我们需要先找到宿主机的目录,然后再把jar包放进去。

  1. 查看容器的详细信息:
    在这里插入图片描述
    找到如下文字,红框中的路径就是宿主机的目录,在这里插入图片描述
    复制目录进入目录,打开xftp。

将项目打成jar包,把名字更改为app.jar,放入xftp中,
在这里插入图片描述

测试:
在这里插入图片描述
在这里插入图片描述

2. war包的构建

1.1 将项目打包

创建一个Springboot项目,打包方式为war包,创建一个User 类,再创建一个UserController类

@RestController
@RequestMapping("user")
public class UserController {

	@RequestMapping("loadAllUser")
	public List<User> loadAllUser() {
		List<User> users = new ArrayList<>();
		for(int i = 1; i <= 10; i++) {
			User user = new User("富贵" + i, 18 + i);
			users.add(user);
		}
		return users;
	}
}

将项目打包

1.1 创建Dockerfile

在这里插入图片描述

1.2 导入war包

修改war包的名称为hello.war,放入xftp中
在这里插入图片描述

1.3 编写Dockerfile文件

运行war包需要依赖Tomcat,所以这里基于Tomcat:alpine 镜像之上构建镜像;
解压包的命令必须加上-dRUN unzip ./hello.war -d ./ROOT;

#基于Tomcat:alpine
FROM tomcat:alpine
#作者
MAINTAINER young<yyggmmshen@foxmail.com>
#声明变量
ENV TOMCATPATH /usr/local/tomcat
#设置工作目录
WORKDIR ${TOMCATPATH}/webapps
#删除ROOT目录里的所有文件
RUN rm -rf *
#导入war包
COPY hello.war ./hello.war
#创建ROOT目录
RUN mkdir ROOT
#将war包解压到ROOT目录下
RUN unzip ./hello.war -d ./ROOT
#删除war包
RUN rm -rf hello.war
#暴露接口
EXPOSE 8080
#启动Tomcat
CMD ["../bin/catalina.sh","run"]

1.4 构建镜像

在这里插入图片描述

1.5 运行镜像

在这里插入图片描述
测试:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值