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

 更新时间:2025年01月03日 10:42:39   作者:默 语  
在这篇文章中,我们将详细讲解如何使用Docker打包和运行一个Java应用镜像,通过此教程,即使你是一个小白,也能轻松学会如何构建Docker镜像并运行Java应用,感兴趣的小伙伴跟着小编一起来看看吧

摘要

本教程包括以下内容:

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

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

引言

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

正文

1. 准备工作

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

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

docker load -i <镜像文件名>

例如:

docker load -i jdk-1.8.0_432.tar

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

docker images

  1. 准备项目所需文件
    需要准备的文件包括:

    • Java应用的JAR包(如demo-0.0.1-SNAPSHOT.jar)。
    • 应用配置文件(如application.properties)。
    • 启动脚本(start_1.sh)。
    • Dockerfile。

2. 编写启动脚本

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

#!/bin/sh
# 设置环境变量以支持UTF-8编码
export LANG=en_US.UTF-8
TZ='CST-8'
export TZ

# 定义JAR文件目录、JAR文件名和日志目录
JarDir="/ywc/zb/"  # JAR包的存放路径
LogDir="/ywc/zb/"  # 日志文件的存放路径
JarFile="demo-0.0.1-SNAPSHOT.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 -Dfile.encoding=UTF-8 -jar $JarDir$JarFile \
  -Xmx1024m -Xms1024m \
  --spring.config.location=${JarDir}application.yml \
  --spring.config.location=${JarDir}application.properties >> $LogDir$OutFile &

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

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

3. 编写Dockerfile

下面是Dockerfile的内容:

# 基于指定版本的Java镜像
FROM jdk:1.8.0_432  # Java版本

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

# 设置时区
ENV TZ=Asia/Shanghai
RUN 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

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

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

4. 构建镜像并运行容器

文件名字:demo-api

版本: 1.0

  1. 构建Docker镜像

  2. 使用以下命令构建镜像:

docker build -t demo-api:1.0 .

运行Docker容器

18080 端口

运行容器并映射端口

docker run -it -p 18080:18080 demo-api:1.0

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

   docker run -it demo-api:1.0 /bin/bash

5. 验证应用运行

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

总结

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

到此这篇关于使用Docker打包和运行Java镜像的完整指南的文章就介绍到这了,更多相关Docker打包和运行Java镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详细介绍如何安装最新版Docker Compose

    详细介绍如何安装最新版Docker Compose

    Docker Compose是一个用来定义和运行多个复杂应用的Docker编排工具,下面这篇文章主要给大家介绍了关于如何安装最新版Docker Compose的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • docker打tar包命令使用小结

    docker打tar包命令使用小结

    本文主要介绍了docker打tar包命令使用小结,详细讲解了使用 docker ps`命令查看容器信息及镜像名称与容器名称的区别,具有一定的参考价值,感兴趣的可以了解一下
    2025-12-12
  • Docker pull命令从镜像仓库获取镜像步骤详解

    Docker pull命令从镜像仓库获取镜像步骤详解

    docker pull是Docker中最基础也是最重要的命令之一,它用于从镜像仓库中拉取或下载镜像到本地,这篇文章主要介绍了Docker pull命令从镜像仓库获取镜像的相关资料,需要的朋友可以参考下
    2025-07-07
  • Docker挂载/etc/timezone报错问题

    Docker挂载/etc/timezone报错问题

    这篇文章主要介绍了Docker挂载/etc/timezone报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 浅析Docker如何创建自定义容器(附通用Python 3.12模板)

    浅析Docker如何创建自定义容器(附通用Python 3.12模板)

    这篇文章主要为大家详细介绍了Docker如何创建自定义容器,并附上通用Python 3.12模板,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-11-11
  • Docker多阶段构建镜像multi-stage详解

    Docker多阶段构建镜像multi-stage详解

    多阶段构建是Docker 17.05及以上版本的新特性,允许在一个Dockerfile中使用多个阶段,每个阶段可以有一个独立的基础镜像,并且可以通过COPY --from命令在阶段之间传递文件,这样可以有效地减少最终镜像的大小,只保留必要的文件
    2025-10-10
  • docker设置redis密码实现方式

    docker设置redis密码实现方式

    这篇文章主要介绍了docker设置redis密码实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-06-06
  • Docker Compose从安装到使用详细过程

    Docker Compose从安装到使用详细过程

    Docker Compose是Docker官方提供的一个工具,用于定义和运行多容器 Docker应用程序,本文给大家介绍Docker Compose从安装到使用详细过程,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • Docker本地部署Drupal并实现公网访问的详细步骤

    Docker本地部署Drupal并实现公网访问的详细步骤

    Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,这篇文章主要给大家介绍了关于Docker本地部署Drupal并实现公网访问的详细步骤,需要的朋友可以参考下
    2023-12-12
  • Docker部署Flask应用的实现步骤

    Docker部署Flask应用的实现步骤

    这篇文章主要介绍了Docker部署Flask应用的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论