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文件排除不必要的文件

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

相关推荐
Hello.Reader6 分钟前
PyFlink JAR、Python 包、requirements、虚拟环境、模型文件,远程集群怎么一次搞定?
java·python·jar
Zsr102320 分钟前
K8s核心组件pod:进阶篇
云原生·容器·kubernetes·pod
mr_orange_klj25 分钟前
k8s StorageClass和Provisoner的AI问答(豆包)
人工智能·容器·kubernetes
唯情于酒11 小时前
Docker学习
学习·docker·容器
喵叔哟11 小时前
20.部署与运维
运维·docker·容器·.net
德育处主任14 小时前
『NAS』在群晖部署一个文件加密工具-hat.sh
前端·算法·docker
运维栈记16 小时前
虚拟化网络的根基-网络命名空间
网络·docker·容器
Hellc00717 小时前
Docker网络冲突排查与解决方案:完整指南
网络·docker·容器
hanyi_qwe17 小时前
发布策略 【K8S (三)】
docker·容器·kubernetes