将jar制作成docker镜像运行

将jar制作成docker镜像运行

手动编写 Dockerfile 方式

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

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

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

    application.yml

    yaml 复制代码
    logging:
      file:
        name: logs/app.log

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

2. 创建 Dockerfile

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

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 镜像:

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

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

bash 复制代码
docker images

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

5. 运行 Docker 容器

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

bash 复制代码
docker run -p 8080:8080 -d  --name your-container-name  your-image-name:your-tag

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

bash 复制代码
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 容器中运行。

相关推荐
liliangcsdn34 分钟前
Mac M1探索AnythingLLM+SearXNG
人工智能·docker·云原生·eureka
HZ_YZ44 分钟前
idea docker打包springboot镜像自动推送服务器
docker
旧时光巷1 小时前
【docker①】在VS Code中使用Docker容器
运维·vscode·docker·容器·环境配置·安装教程·镜像构建
JavaArchJourney1 小时前
LinkedList 源码分析
java
回家路上绕了弯1 小时前
Spring AOP 详解与实战:从入门到精通
java·spring
缉毒英雄祁同伟2 小时前
企业级WEB应用服务器TOMCAT
java·前端·tomcat
青云交2 小时前
Java 大视界 -- 基于 Java 的大数据可视化在能源互联网全景展示与能源调度决策支持中的应用
java·大数据可视化·智能决策·能源互联网·三维渲染·能源调度·nsga-ii
盖世英雄酱581363 小时前
国企“高级”程序员写的那些问题代码(六期)
java·后端
藤椒鱼不爱编程3 小时前
面向对象_类与对象
java
xcnwldgxxlhtff3 小时前
Java:线程池
java·开发语言