您现在的位置是:首页 > 编程 > 

使用Docker打包和运行Java镜像:完整指南

2025-07-22 19:47:33
使用Docker打包和运行Java镜像:完整指南 默语是谁?大家好,我是 默语,别名默语博主,擅长的技术领域包括Java、运维和人工智能。我的技术背景扎实,涵盖了从后端开发到前端框架的各个方面,特别是在Java 性能优化、多线程编程、算法优化等领域有深厚造诣。目前,我活跃在CSD、掘金、阿里云和 51CTO等平台,全网拥有超过10万的粉丝,总阅读量超过1400 万。统一 IP 名称为 默语 或者

使用Docker打包和运行Java镜像:完整指南

默语是谁?

大家好,我是 默语,别名默语博主,擅长的技术领域包括Java、运维和人工智能。我的技术背景扎实,涵盖了从后端开发到前端框架的各个方面,特别是在Java 性能优化、多线程编程、算法优化等领域有深厚造诣。

目前,我活跃在CSD、掘金、阿里云和 51CTO等平台,全网拥有超过10万的粉丝,总阅读量超过1400 万。统一 IP 名称为 默语 或者 默语博主。我是 CSD 博客专家、阿里云专家博主和掘金博客专家,曾获博客专家、优秀社区主理人等多项荣誉,并在 202 年度博客之星评选中名列前 50。我还是 Java 高级工程师、自媒体博主,北京城市开发者社区的主理人,拥有丰富的项目开发经验和产品设计能力。希望通过我的分享,帮助大家更好地了解和使用各类技术产品,在不断的学习过程中,可以帮助到更多的人,结交更多的朋友.

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

使用Docker打包和运行Java镜像:完整指南

在这篇文章中,我们将详细讲解如何使用Docker打包和运行一个Java应用镜像。通过此教程,即使你是一个小白,也能轻松学会如何构建Docker镜像并运行Java应用。

摘要

本教程包括以下内容:

  1. 准备Java镜像的基础环境。
  2. 编写启动脚本和Dockerfile。
  3. 使用Docker构建Java应用镜像。
  4. 启动容器运行Java应用。
  5. 可能遇到的问题及解决方案。

最后会引导大家加我的,方便随时交流!


引言

Docker作为一种轻量级容器化技术,可以极大地方便应用的部署和管理。通过Docker,我们可以在任何支持Docker的系统上轻松运行Java应用,而不需要单独安装Java环境。


正文

1. 准备工作

安装Docker 确保系统上已经安装了Docker。如果尚未安装,请参考官方文档进行安装。

加载基础Java镜像 使用以下命令加载Java镜像(这里假设你已经有了一个本地的Java镜像文件):

代码语言:javascript代码运行次数:0运行复制
docker load -i <镜像文件名>

例如:

代码语言:javascript代码运行次数:0运行复制
docker load -i jdk-1.8.0_

加载成功后,可以通过以下命令查看镜像:

代码语言:javascript代码运行次数:0运行复制
docker images
  1. 准备项目所需文件 需要准备的文件包括:
    • Java应用的JAR包(如demo-0.0.1-SAPSHOT.jar)。
    • 应用配置文件(如application.properties)。
    • 启动脚本(start_1.sh)。
    • Dockerfile。
2. 编写启动脚本

以下是一个完整的start_1.sh脚本,用于启动Java应用。每一部分都有详细注释,帮助你理解其功能:

代码语言:javascript代码运行次数:0运行复制
#!/bin/sh
# 设置环境变量以支持UTF-8编码
export LAG=en_US.UTF-8
TZ='CST-8'
export TZ

# 定义JAR文件目录、JAR文件名和日志目录
JarDir="/ywc/zb/"  # JAR包的存放路径
LogDir="/ywc/zb/"  # 日志文件的存放路径
JarFile="demo-0.0.1-SAPSHOT.jar"  # JAR文件名称
OutFile="demo.log"  # 输出的日志文件名称

# 将脚本运行信息写入日志
echo "Starting application..." > $LogDir$OutFile

# 检查是否已有运行的Java进程
ThreadID=$(ps -ef | grep $JarFile | grep -v grep | awk '{print $2}')
if [ ! -z $ThreadID ]; then
    echo "$JarFile 已在进程 $ThreadID 中运行,尝试终止..." >> $LogDir$OutFile
    kill -9 $ThreadID
    echo "已终止存在的进程 $ThreadID。" >> $LogDir$OutFile
fi

# 启动Java应用
nohup java =UTF-8 -jar $JarDir$JarFile \
  -Xmx1024m -Xms1024m \
  location=${JarDir}application.yml \
  location=${JarDir}application.properties >> $LogDir$OutFile &

echo "启动 $JarFile..." >> $LogDir$OutFile
sleep s

# 实时显示日志
tail -f $LogDir$OutFile

. 编写Dockerfile

下面是Dockerfile的内容:

代码语言:javascript代码运行次数:0运行复制
# 基于指定版本的Java镜像
FROM jdk:1.8.0_42  # Java版本

# 添加Java应用的JAR包到容器中
ADD demo-0.0.1-SAPSHOT.jar /ywc/zb/demo-0.0.1-SAPSHOT.jar

# 设置时区
EV TZ=Asia/Shanghai
RU ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone

# 添加配置文件
ADD application.properties /ywc/zb/application.properties

# 添加启动脚本
ADD start_1.sh /ywc/zb/start_1.sh

# 设置工作目录
WORKDIR /ywc/zb

# 暴露应用端口
EXPOSE 18080

# 赋予启动脚本可执行权限
RU chmod +x /ywc/zb/start_1.sh

# 指定启动容器时运行的命令
ETRYPOIT ["./start_1.sh"]

4. 构建镜像并运行容器

文件名字:demo-api

版本: 1.0

  1. 构建Docker镜像
  2. 使用以下命令构建镜像:
代码语言:javascript代码运行次数:0运行复制
docker build -t demo-api:1.0 .

运行Docker容器

18080 端口 运行容器并映射端口

代码语言:javascript代码运行次数:0运行复制
docker run -it -p 18080:18080 demo-api:1.0

如果需要进入容器调试,可以运行:

代码语言:javascript代码运行次数:0运行复制
   docker run -it demo-api:1.0 /bin/bash

5. 验证应用运行

访问容器暴露的端口,确保应用正常运行。例如,如果应用监听在18080端口,可以通过浏览器访问 http://<服务器IP>:18080

总结

通过以上步骤,你已经成功使用Docker打包并运行了一个Java应用镜像。这种方式可以极大地简化应用部署流程,并提高运行环境的稳定性。

参考资料

  • Docker官方文档
  • Java官方文档

如果你在操作中遇到任何问题,欢迎随时加我的(默语小助手),一起交流学习!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-02,如有侵权请联系 cloudcommunity@tencent 删除打包容器脚本镜像java

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1184524.html

相关标签:无
上传时间: 2025-07-22 09:31:18
留言与评论(共有 17 条评论)
本站网友 国家大事新闻
26分钟前 发表
北京城市开发者社区的主理人
本站网友 旋覆代赭石汤
23分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看打包容器脚本镜像java
本站网友 五个湖北
20分钟前 发表
通过Docker
本站网友 头发分叉
10分钟前 发表
而不需要单独安装Java环境
本站网友 金宝街电影院
18分钟前 发表
总结通过以上步骤
本站网友 瓶颈是什么意思
26分钟前 发表
请参考官方文档进行安装
本站网友 过敏哮喘
8分钟前 发表
有实用价值的技术洞察与分析
本站网友 周边配套
3分钟前 发表
18080
本站网友 南京二手
28分钟前 发表
而不需要单独安装Java环境
本站网友 北京正规的整形医院
9分钟前 发表
使用Docker打包和运行Java镜像:完整指南 默语是谁?大家好
本站网友 怀孕九个月
22分钟前 发表
Dockerfile
本站网友 阳新房屋出租
3分钟前 发表
尝试终止..." >> $LogDir$OutFile kill -9 $ThreadID echo "已终止存在的进程 $ThreadID
本站网友 去除脸部皱纹
25分钟前 发表
如果尚未安装
本站网友 石家庄结婚
18分钟前 发表
统一 IP 名称为 默语 或者 默语博主
本站网友 什么是前列腺炎
25分钟前 发表
特别是在Java 性能优化
本站网友 样板间软装
13分钟前 发表
算法优化等领域有深厚造诣