docker怎么运行jar包

在Windows的Docker中运行JAR包有以下几种方式:

方法一:使用Dockerfile构建镜像

  1. 创建Dockerfile(与JAR包同一目录):

    使用OpenJDK官方镜像

    FROM openjdk:8-jre-alpine

    或者使用其他版本:FROM openjdk:11-jre-slim

    创建工作目录

    WORKDIR /app

    复制JAR包到容器中

    COPY your-app.jar app.jar

    暴露端口(根据你的应用端口修改)

    EXPOSE 8080

    运行JAR包

    ENTRYPOINT ["java", "-jar", "app.jar"]

  2. 构建Docker镜像:

    docker build -t my-java-app .

  3. 运行容器:

    docker run -d -p 8080:8080 --name java-container my-java-app

方法二:直接挂载运行(开发环境推荐)

复制代码
# 将宿主机的JAR包挂载到容器中运行
docker run -d -p 8080:8080 -v "C:\path\to\your\jar:/app" openjdk:8-jre-alpine java -jar /app/your-app.jar

方法三:使用Docker Compose

创建 docker-compose.yml文件:

复制代码
version: '3.8'
services:
  java-app:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - ./logs:/app/logs  # 挂载日志目录
    environment:
      - SPRING_PROFILES_ACTIVE=prod

运行:docker-compose up -d

常用参数说明

复制代码
# 指定JVM参数
docker run -d -p 8080:8080 my-java-app java -Xmx512m -jar app.jar

# 挂载配置文件
docker run -d -p 8080:8080 -v "C:\config:/config" my-java-app

# 设置环境变量
docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=prod" my-java-app

实用技巧

  1. 多阶段构建(减少镜像大小):

    FROM maven:3.6.3-jdk-8 AS builder
    WORKDIR /app
    COPY . .
    RUN mvn clean package

    FROM openjdk:8-jre-alpine
    COPY --from=builder /app/target/*.jar app.jar
    ENTRYPOINT ["java", "-jar", "app.jar"]

  2. 健康检查:

    HEALTHCHECK --interval=30s --timeout=3s
    CMD curl -f http://localhost:8080/health || exit 1

注意事项

  • 确保Windows上的Docker Desktop已启动

  • 路径使用正斜杠 /或双反斜杠 \\

  • 检查防火墙设置,确保端口可访问

  • 考虑使用 .dockerignore文件排除不必要的文件

选择哪种方式取决于你的具体需求:开发调试推荐方法二,生产环境推荐方法一。

相关推荐
更深兼春远2 小时前
第2篇:Dify 部署保姆级教程:用 Docker跑起来
docker·容器·dify
小白的码BUG之路6 小时前
Docker -- No space left on device
运维·docker·容器
wzq11_6666 小时前
Kubernetes集群——Service篇(详细讲解!!!)
云原生·容器·kubernetes
程序员老陆7 小时前
Docker 命令全景指南:从镜像构建到生产运维
运维·docker·容器
灯澜忆梦17 小时前
【minio】#1 | 简介与安装
docker·对象存储·minio
江湖有缘1 天前
3款开源绘图工具整理合集,可Docker一键部署!
docker·容器·开源
TTATTC1 天前
告别协议选型内耗:深入拆解微服务“内部 gRPC + 边界 REST”混合通信架构与 Envoy 转码实战
docker·开源
小匠石钧知1 天前
06_在k8s集群中安装MetalLB实现LoadBalancer
云原生·容器·kubernetes·service·loadbalancer·metallb
光依旧2 天前
PageIndex没翻车,翻车的是我的解析器
docker·langchain·大模型·向量数据库·pdf解析·rag·pageindex
谢亮_vipxieliang2 天前
容器排障实战手册:从日志到内核的分层排障
docker·云原生·容器·eureka