Docker将jar包装为Image并运行

参考资料:

参考课程:https://ke.gupaoedu.cn/play/288/5/37604?phaseId=6


准备材料:

1. 可运行且可访问的jar包

java 复制代码
@Controller
public class DockerController {

    @PostMapping("helloWorld")
    public ResponseEntity<String> helloWorld(){
        System.out.println("=====>helloWorld<=====");
        return new ResponseEntity<>("helloWorld",HttpStatus.OK);
    }
}

2. Docker环境


原理介绍

基于docker文件的分层(layer)概念

DockerFile可以通过程序,将很多层变成一个image

DockerFile 有自己的语法,可以参考docker-library中的文件,结合AI帮助来写


将Jar包打包为Image:

1. 执行如下命令,将项目打包成jar包

bash 复制代码
mvn clean package

2. 创建文件夹并上传文件

在linux服务器创建文件夹,并将打包好的jar包上传至文件夹中,比如 docker_helloWorld

bash 复制代码
mkdir docker_helloWorld

3. 创建dockerfile 编辑

使用命令,在文件夹中,创建Dockerfile,并编辑

bash 复制代码
vi Dockerfile

然后将下面内容粘贴进去(具体内容可以用AI进行解释)

bash 复制代码
FROM openjdk:8 
MAINTAINER peter2026 
LABEL name="dockerfile-demo" version="1.0" author="peter2026" 
COPY docker-hello-world-0.0.1-SNAPSHOT.jar dockerfile-image.jar 
CMD ["java","-jar","dockerfile-image.jar"]

4. 构建镜像

如果使用默认的dockerHub来获取openJDK的话,可能需要做一些代理或者加速服务,参考B站

如果还是不行的话,可以先把from语句的镜像拉取到本地,然后再构建

bash 复制代码
docker pull cf-workers-docker-io-6es.pages.dev/openjdk:8u102-jdk

执行如下语句进行构建(注意后面的一点,表示当前目录)

bash 复制代码
docker build -t my-docker-image .

然后执行docker images就可以看到构建好的镜像

5. 运行镜像

将构建好的镜像运行,执行下面命令

bash 复制代码
docker run -d --name my_container_01 -p 6666:8080 my-docker-image

上面是将container的8080端口映射到了Linux虚拟机的6666端口

执行下面命令查看运行的容器

bash 复制代码
docker ps

6. 访问运行的jar包

查看docker所在系统的IP

bash 复制代码
ip a

然后用PostMan进行访问即可,比如

192.168.124.128:6666/helloWorld

相关推荐
阳光九叶草LXGZXJ7 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
黄大刀8 小时前
DataPulse一款开箱即用的SCADA(四)-历史记录
运维·scada·动环
归秋14210 小时前
2026 企业 AI 办公工具选型指南:从评估框架到产品适配
大数据·运维·人工智能
Android系统攻城狮10 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
硅基手札12 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
工作10年+,存储芯片行业14 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
快乐の番薯14 小时前
卷王问卷考试系统自动化功能测试
运维·功能测试·自动化
一号弯15 小时前
装完LINUX,请先新建日常用户
linux·运维·服务器
许彰午16 小时前
03-Linux环境准备依赖包内核参数与用户组
linux·运维·服务器·数据库
阳光九叶草LXGZXJ16 小时前
达梦数据库-报错-16-MERGE INTO提示:无效的列名[XX]
linux·运维·数据库·sql·学习