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

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

相关推荐
donoot7 小时前
一次 Nginx 502 问题的深度排查:从 SELinux 到容器网络
nginx·docker·selinux·反向代理·502 bad gateway
Sagittarius_A*9 小时前
Docker:渗透前置容器化核心基础
运维·安全·docker·容器
名字还没想好☜12 小时前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
花和满楼12 小时前
K8s 1.36 ImageVolume GA:OCI 镜像不再只能跑容器
java·容器·kubernetes
生活爱好者!13 小时前
NAS还能玩游戏?部署一款 WebGL 3D 赛车小游戏
游戏·docker·容器·玩游戏
丑小鸭是白天鹅13 小时前
Android 打包jar
android·pycharm·jar
曦月合一14 小时前
本地电脑部署docker,及各种组件(nginx、mysql、redis、mongo、minio、java)
docker·windows10 专业版
hj28625115 小时前
Docker 核心知识点整理(网络 + Dockerfile + 原理 + 命令)
网络·docker·容器
梦想的颜色1 天前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
万里侯1 天前
GitOps 漂移检测:集群里改了配置,Git 还以为一切正常
微服务·容器·k8s