利用Docker创建镜像运行jar包

本文详细介绍了如何使用Docker创建包含JDK环境的镜像,并在该镜像中运行Java应用。步骤包括上传jar包、编写Dockerfile、构建镜像、运行容器等,适合希望利用Docker进行Java应用管理的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:项目是打包成jar包的,想利用docker去管理运行jar包,通过docker的了解可以知道,想运行jar,那么此jar包需要运行在一个有着jdk环境的docker镜像中,以下教程则是创建一个jdk环境的镜像并且运行jar包。

一、将所需要运行的jar包上传到服务器中。
本教程jar包存放位置为/usr/springboot/lost_and_found-v1.jar

二、创建Dockerfile文件
Dockerfile文件是用来创建镜像文件的,也就是镜像的创建离不来Dockerfile,在与jar包同级的目录下创建Dockerfile文件。
在这里插入图片描述
文件内容如下:

# 基础镜像是docker仓库的java:8(也就是jdk8的意思)
 FROM java:8
 
#  作者签名
 MAINTAINER Ma Lizhi
 
#  简化 jar 的名字路径 (左边是服务器中jar包的路径,因为当前文件是和jar包同级,所以直接写名字即可,右边是镜像中要存放jar包的路径)
 COPY lost_and_found-v1.jar /lost_and_found-v1.jar
 
#  执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就此行,后面的jar包路径就是上面要设置的jar包路径)
 CMD java -jar /lost_and_found-v1.jar
 
#  设置对外端口为 8082
 EXPOSE 8082

三、通过Dockerfile创建镜像
命令中的lost_and_found是镜像名的意思,此行命令最后有一个点,表示使用当前上下文中的 Dockerfile 文件

[root@VM_0_15_centos springboot]# docker build -t lost_and_found .

运行命令后,看见 Successfully built 3cc4e76442c7则代表创建镜像成功。

四、查看docker镜像

[root@VM_0_15_centos springboot]# docker images

在这里插入图片描述

五、运行jar包

  • -d代表后台运行
  • -p 8082:8082 端口映射,后一个8082是镜像的端口
  • 第一个lost_and_found代表是给容器的名字
  • 第二个lost_and_found是上面创建镜像的名字
[root@VM_0_15_centos springboot]# docker run -d -p 8082:8082 --name lost_and_found lost_and_found

在这里插入图片描述

六、查看容器

[root@VM_0_15_centos springboot]# docker ps -a

在这里插入图片描述
访问项目通过ip地址:端口号访问成功~

### 如何在Docker镜像含或运行JAR文件 为了使 JAR 文件能够在 Docker 容器内正常运行,通常的做法是在编写 `Dockerfile` 的时候就将应用程序所需的 JAR 文件以及任何必要的配置文件一同打进入镜像之中。下面是一个典型的流程。 #### 使用合适的官方基础镜像 选择合适的基础镜像是构建高效、安全的应用程序的关键一步。对于 Java 应用来说,可以选用带有 JDK 或者仅含 JRE 的轻量级 Alpine Linux 版本作为基础镜像[^2]: ```dockerfile FROM openjdk:8-jdk-alpine ``` 这行代码选择了 OpenJDK 8 的版本,并且使用了更精简的 alpine 发行版以减小最终镜像大小。 #### 将应用资源加入容器 接着通过 COPY 或 ADD 命令把本地机器上的 JAR 文件和可能存在的其他依赖项(比如配置文件)复制到目标位置 `/app` 下面: ```dockerfile COPY myapplication.jar /app/myapplication.jar COPY application.properties /app/application.properties WORKDIR /app ``` 这里假设有一个名为 `myapplication.jar` 的可执行 JAR一个对应的属性文件被放置到了同一个目录里;随后设置了当前的工作目录为 `/app` ,以便后续操作可以直接引用相对路径下的文件而无需指明绝对路径。 #### 设定启动命令 为了让容器启动时自动加载并运行指定的 JAR 文件,可以通过 CMD 或 ENTRYPOINT 来定义默认入口点。考虑到 Spring Boot 类型项目可能会有额外参数需求,推荐采用如下方式设置: ```dockerfile ENTRYPOINT ["java", "-jar", "/app/myapplication.jar"] CMD ["--spring.config.location=/app/application.properties"] ``` 这种方式不仅能够确保每次启动都能正确调用主类方法,还允许传递特定于环境变量或其他动态调整选项给 JVM 进程。 #### 构建与测试镜像 完成以上步骤之后就可以利用 `docker build` 指令来创建自定义镜像了。记得替换掉 `-t` 参数后面的标签名以匹配实际应用场景中的命名约定[^4]: ```bash docker build -t custom-java-app . ``` 最后一步则是验证整个过程是否成功——即尝试依据新生成的镜像实例化一个新的容器实例,并确认其行为符合预期: ```bash docker run -d --name running-java-app -p hostPort:containerPort custom-java-app ``` 在这个例子中,`hostPort` 是宿主机开放供外部访问的服务端口号,而 `containerPort` 则对应着内部监听的具体数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值