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

相关推荐
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦2 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875242 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant