docker部署 Java 项目jar

SpringBoot 项目打成 jar包,打包命令:

复制代码
mvn clean package -Dmaven.test.skip=true

打包后在 target/ 目录获取 jar包,复制到部署目录

使用 docker 创建一个可以运行 jar 包的镜像文件

创建 Dockerfile 文件,根据你项目的jdk版本自行选择jdk

复制代码
FROM amazoncorretto:21
ADD ./*.jar /app.jar
EXPOSE 80
ENTRYPOINT ["java", "-jar","-Dserver.port=80" , "/app.jar"]

打开cmd控制台,来到你存放Dockerfile目录下执行:

复制代码
docker build -t ims:1.0.0 .

-t 是一个参数选项,全称是 --tag,用于给构建的镜像指定一个名称和可选的标签。

-t 的格式:

-t <镜像名>:<标签>

如果只提供 <镜像名> 而不指定 <标签>,Docker 会默认使用 latest 作为标签。

可以看到image构建成功

使用docker compose文件方式启动

新建ims.yaml文件:

复制代码
version: '3.7'

services:
    ims:
        image: ims:1.0.0
        volumes:
            - D:/docker/test/logs:/logs
            - D:/docker/test/config:/config
        ports:
            - 8401:80
        environment:
            - TZ=Asia/Shanghai
        deploy:
            replicas: 1
            restart_policy:
                condition: on-failure
            resources:
                limits:
                    cpus: '4'
                    memory: 8G
        entrypoint: ["java", "-XX:+UseContainerSupport","-XX:InitialRAMPercentage=70.0", "-XX:MaxRAMPercentage=70.0", "-jar", "-Dserver.port=80", "/app.jar","--spring.profiles.active=prod"]
        networks:
            - _network


networks:
    _network:
        external: true
        driver: overlay
        name: lk

执行

复制代码
docker-compose -f ims.yaml up -d

然后可以访问项目了,我访问的是knife的接口地址

http://localhost:8401/doc.html

当然也可以直接用命令run起来,windows系统的cmd执行不可换行:

复制代码
docker run -d --name ims -v D:/docker/test/logs:/logs -v D:/docker/test/config:/config -p 8401:80  -e TZ=Asia/Shanghai --cpus="4" --memory="8g" --network lk --restart=on-failure ims:1.0.0 java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -jar -Dserver.port=8401 /app.jar --spring.profiles.active=prod

PowerShell 支持换行

复制代码
docker run -d `
  --name ims `
  -v D:/docker/test/logs:/logs `
  -v D:/docker/test/config:/config `
  -p 8401:80 `
  -e TZ=Asia/Shanghai `
  --cpus="4" `
  --memory="8g" `
  --network lk `
  --restart=on-failure `
  ims:1.0.0 `
  java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -jar -Dserver.port=8401 /app.jar --spring.profiles.active=prod

注意,我现在网络已经创建好了,如果需要创建网络:

复制代码
REM 1. 创建网络(如果需要)
docker network create --driver overlay lk
相关推荐
那明眸似水8 分钟前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
Highcharts.js23 分钟前
Highcharts智能数据分析平台Orbit 多语言配置技术文档
java·前端·javascript·highcharts·orbit·智能数据分析·设置文档
Rain的Java大神之路31 分钟前
设计一套生产级 API 接口:从契约、安全、幂等到限流,我踩过的坑都在这了
java·后端·面试
SimonKing33 分钟前
零配置也能白嫖前沿大模型!dsh-our-free-model插件真香警告
java·后端·程序员
nice_lcj52034 分钟前
【从零理解 Spring AI · 15】让检索更准:先宽召回,再精排序
java·后端·rag·spring ai·ai应用开发·检索优化·重排序
杨凯凡2 小时前
Spring Boot 链路追踪实战:Micrometer、TraceId 与异步线程上下文传播
java·spring boot·后端
计算机毕设定制辅导-无忧学长2 小时前
《基于Spring Boot的迷游哈游戏综合服务平台的开发》
java·vue.js·spring boot·mysql·迷游哈游戏综合服务平台
非优秀程序员11 小时前
第04章 邮箱大战,163 与 QQ 的暗战|《互联网产品恩仇录》
java·vue.js·架构
知已难寻12 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
文丑颜不良啊14 小时前
LeetCode2481~2500题目解析
java·leetcode