将jar制作成docker镜像运行

ops/2025/2/12 23:31:12/

jardocker_0">将jar制作成docker镜像运行

手动编写 Dockerfile 方式

1. 准备工作
  • 确保你已经安装了 Docker,并且 Docker 服务正在运行。

  • 有一个可运行的 JAR 文件,假设文件名为 your-application.jar

  • 修改springboot配置文件让日志输出到指定目录下文件中

    application.yml

    logging:file:name: logs/app.log
    

    这会让应用将日志输出到 logs 目录下的 app.log 文件中。

2. 创建 Dockerfile

在 JAR 文件所在的目录下创建一个名为 Dockerfile 的文件,内容如下:

# 使用基础的 Java 镜像,这里以 OpenJDK 17 为例
FROM openjdk:17-jdk-slim# 设置工作目录
WORKDIR /app# 将 JAR 文件复制到工作目录
COPY your-application.jar app.jar# 创建日志目录 在工作目录下
RUN mkdir -p logs# 暴露应用程序使用的端口,根据实际情况修改
EXPOSE 8080# 定义容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "app.jar"]
3. 构建 Docker 镜像

打开终端,进入包含 Dockerfile 和 JAR 文件的目录,执行以下命令构建 Docker 镜像:

docker build -t your-image-name:your-tag .
  • -t:用于指定镜像的名称和标签,你可以将 your-image-name 替换为你想要的镜像名称,your-tag 替换为版本号或其他标识,例如 my-app:1.0
  • .:表示使用当前目录下的 Dockerfile 进行构建。
4. 查看构建好的镜像

使用以下命令查看本地已构建的 Docker 镜像:

docker images

你应该能看到刚刚构建的镜像信息。

5. 运行 Docker 容器

使用以下命令运行 Docker 容器:

docker run -p 8080:8080 -d  --name your-container-name  your-image-name:your-tag

使用以下命令运行 Docker 容器并挂载日志目录(/host/logs 宿主机的日志存放位置 /app/logs 容器中日志存放位置 ):

docker run -p 8080:8080 -v /host/logs:/app/logs -d --name your-container-name your-image-name:your-tag

参数解释

  • -p 8080:8080:将容器内部的 8080 端口映射到宿主机的 8080 端口,这样可以通过宿主机的 IP 地址和 8080 端口访问容器内运行的应用程序。
  • -v /host/logs:/app/logs:将宿主机的 /host/logs 目录挂载到容器内的 /app/logs 目录,实现日志文件的映射,方便在宿主机上查看和管理容器内应用产生的日志。
  • -d:让容器以守护进程(后台)模式运行,即容器在后台持续运行,不会占用当前终端。
  • --name your-container-name:为容器指定一个自定义名称,你可以将 your-container-name 替换为你希望使用的名称,例如 my-spring-boot-app。使用自定义名称后,在后续操作中可以更方便地引用该容器,比如停止、重启、删除容器等操作。
  • your-image-name:your-tag:指定要运行的 Docker 镜像及其标签,your-image-name 是镜像的名称,your-tag 是镜像的版本标签,例如 my-java-app:1.0
6. 验证应用程序是否正常运行

打开浏览器,访问 http://localhost:8080(如果是在本地运行),如果看到应用程序的响应,说明应用已经成功在 Docker 容器中运行。


http://www.ppmy.cn/ops/157891.html

相关文章

网络安全知识--网络、网络安全产品及密码产品概述

网络、网络安全产品及密码产品概述 网络、安全产品网络安全关注重点 网络结构 网络设备:交换机、路由器、负载均衡 安全设备: 通信网络安全类:通信安全、网络监测与控制 区域边界安全类:隔离类、入侵防范、边界访问 安全服务&#xff…

ML.NET库学习003:基于时间序列的共享单车需求预测项目解析

文章目录 ML.NET库学习003:基于时间序列的共享单车需求预测项目解析项目主要目的和原理目的原理 项目概述数据来源工具与框架 Program.cs主要功能和步骤1. 数据加载与预处理2. 特征工程3. 模型训练4. 模型评估5. 模型生成 ModelScoringTester.cs分析与解读方法一&am…

JVM速成=。=

JVM跨平台原理 跨平台:一次编译,到处运行 本质:不同操作系统上运行的JVM不一样,只需要把java程序编译成一份字节码文件,JVM执行不同的字节码文件。 Java是高级语言,提前编译一下(变成字节码文件…

错误报告:非正常关机引发OTA升级失败:缓存丢失问题的排查与解决

项目背景 该项目涉及在设备端运行的 IoT 客户端,该客户端与服务器之间通过 WebSocket (WS) 保持实时连接,进行指令下发和响应。设备在开机时自动启动客户端,并连接至服务器,等待接收指令。以下是项目的具体行为流程: …

解决VsCode的 Vetur 插件has no default export Vetur问题

文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…

【数据结构】(7) 栈和队列

一、栈 Stack 1、什么是栈 栈是一种特殊的线性表,它只能在固定的一端(栈顶)进行出栈、压栈操作,具有后进先出的特点。 2、栈概念的例题 答案为 C,以C为例进行讲解: 第一个出栈的是3,那么 1、…

【数据结构】寻找规律:算对角线长度||杨辉三角||魔方问题(C语言实现)

目录标题 三个算法1. 求矩阵对角线元素之和(C语言)2. 杨辉三角3. 幻方问题 总结:都是通过寻找规律来找出构造逻辑然后用循环来实现 三个算法 1. 求矩阵对角线元素之和(C语言) 1.初始化行循环变量i和列循环遍历j&…

【OneAPI】通过网页预渲染让搜索引擎收录网页

API简介 网页预渲染,适用于动态网页以及单页面的SEO,支持网页缓存。 您无须更改代码即可让搜索引擎收录您的网页。只要将需要预渲染的页面转发的本接口即可。 如果您使用Nginx作为网页服务器,推荐使用以下配置: #您的网站locat…