docker 部署JAR

docker pull openjdk:23

使用Docker运行生成的JAR包是一个将应用程序容器化的好方法,它确保了你的应用可以在任何安装了Docker的环境中以相同的方式运行。以下是创建一个Docker镜像并运行包含你Java应用程序的JAR包的基本步骤。1. 准备 Dockerfile首先,在你的项目根目录下创建一个名为 Dockerfile 的文件(没有扩展名)。这个文件定义了如何构建Docker镜像。以下是一个简单的示例:# 使用官方的 OpenJDK 运行时作为基础镜像

FROM openjdk:17-jdk-alpine

设置工作目录

WORKDIR /app

将生成的 JAR 包复制到镜像中

COPY target/your-application.jar /app/apidemo2.jar

COPY apidemo2.jar /app/apidemo2.jar

暴露应用程序运行所需的端口(如果有的话)

EXPOSE 8080

运行 JAR 文件

ENTRYPOINT ["java", "-jar", "/app/your-application.jar"]

ENTRYPOINT ["java", "-jar", "/app/apidemo2.jar"]

dockerfile请根据实际情况调整上述模板:•替换 target/your-application.jar 为你的JAR包的实际路径和名称。•如果你的应用程序监听不同的端口,请修改 EXPOSE 命令中的端口号。2. 构建 Docker 镜像在包含 Dockerfile 的目录中打开命令行工具,并执行以下命令来构建Docker镜像:docker build -t your-application-name .

docker build -t apidemo2 .

docker system prune -a 清理磁盘

bash这里 -t your-application-name 是给你的镜像指定一个标签,你可以根据需要更改这个名字。3. 运行 Docker 容器一旦镜像构建完成,可以使用以下命令来启动一个容器:

docker run -p 8080:8080 your-application-name

docker run -p 8089:8080 apidemo2

docker run --name apidemo2 -p 8089:8080 -d apidemo2

docker rm apidemo2

docker rmi apidemo2

docker system prune -a 清理磁盘

bash这里的 -p 8080:8080 参数是将主机的8080端口映射到容器内的8080端口,如果你的应用程序使用不同的端口,请相应地调整这些值。your-application-name 应替换为你之前给镜像指定的名字。4. 验证运行情况启动后,你可以通过访问

http://localhost:8080

http://localhost:8089

(或你配置的其他端口)来验证你的应用程序是否正确运行。对于非Web应用程序,可能需要通过日志输出或其他方式检查其运行状态。额外提示•环境变量:如果你的应用程序依赖于某些环境变量,可以在 docker run 命令中通过 -e 参数添加它们,例如 -e ENV_VAR_NAME=value。•挂载卷:为了便于调试或者动态修改配置文件,可以考虑使用 -v 参数来挂载本地目录到容器内部。•多阶段构建:对于更复杂的场景,如需要编译Java代码的情况,可以考虑使用多阶段构建来减小最终镜像的大小。通过以上步骤,你应该能够成功地使用Docker运行你的Java应用程序。如果有任何特定的需求或遇到问题,请随时提问!

相关推荐
二哈赛车手4 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
栗子~~5 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
YDS8295 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
未若君雅裁6 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
阿维的博客日记7 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
雨辰AI7 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
辰海Coding8 小时前
MiniSpring框架学习-完成的 IoC 容器
java·spring boot·学习·架构
小小编程路9 小时前
C++ 多线程与并发
java·jvm·c++
AI视觉网奇9 小时前
linux 检索库 判断库是否支持
java·linux·服务器