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

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

相关推荐
牛奶咖啡132 小时前
Docker容器实践——docker数据管理、网络与容器互联
docker·容器·docker容器互联·docker数据卷·docker挂载主机目录·docker的网络·数据卷与挂载主机目录的数据规则
Mr.王83511 小时前
Kubernetes宿主机本地盘池化管理
ceph·云原生·容器·kubernetes
Smoothcloud润云14 小时前
从“预测下一个词”到“预测下一个世界状态”:世界模型作为AGI新范式的深度分析报告
人工智能·测试工具·微服务·容器·github·状态模式·agi
岳来15 小时前
docker network 命令学习
docker·docker network
老王熬夜敲代码16 小时前
接入Docker隔离测试
docker·容器·langchain
MGS浪疯18 小时前
让 QClaw 将复杂的 Docker 项目转为 exe!
运维·docker·容器
.柒宇.20 小时前
docker容器技术实战
运维·docker·容器
J2虾虾20 小时前
使用Idea当Jar包的反编译
java·intellij-idea·jar
倔强的胖蚂蚁20 小时前
信创企业级 openEuler 24 部署 docker-ce 全指南
运维·docker·云原生·容器
Mark White21 小时前
深入理解 Linux 打印体系:CUPS、驱动、ULD 与 Docker 容器化
linux·运维·docker