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

相关推荐
十年磨一剑~9 分钟前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
阿成学长_Cain16 分钟前
Linux telinit 命令详解:运行级别切换|关机重启|系统维护一站式掌握
linux·运维·前端·网络
QXWZ_IA35 分钟前
油气储罐沉降监测用什么技术方案最好?千寻自动化监测+次声波泄漏方案
运维·科技·自动化·能源
梦梦代码精1 小时前
LikeShop 前后端架构升级对比总白皮书——从传统商城架构到高性能多端统一体系
docker·架构·开源
qeen872 小时前
【Linux】指令补充与shell的简单介绍
linux·运维·服务器
gs801402 小时前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
Z_W_H_2 小时前
minikube start --driver=docker --memory=4000mb出现PROVIDER_DOCKER_NEWGRP
java·docker·minikube
DLYSB_2 小时前
《从零开始搭建机房轻量化“声光告警”系统:基于 HTTP API 与 TTS 的运维实践》
运维·网络协议·http·报警灯
阿成学长_Cain2 小时前
Linux talk 命令详解:经典终端实时聊天工具,无需图形界面即可对话
linux·运维·前端
bukeyiwanshui3 小时前
20260701 k8s Metric Server
容器·贪心算法·kubernetes