在Windows的Docker中运行JAR包有以下几种方式:
方法一:使用Dockerfile构建镜像
-
创建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"]
-
构建Docker镜像:
docker build -t my-java-app .
-
运行容器:
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
实用技巧
-
多阶段构建(减少镜像大小):
FROM maven:3.6.3-jdk-8 AS builder
WORKDIR /app
COPY . .
RUN mvn clean packageFROM openjdk:8-jre-alpine
COPY --from=builder /app/target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"] -
健康检查:
HEALTHCHECK --interval=30s --timeout=3s
CMD curl -f http://localhost:8080/health || exit 1
注意事项
-
确保Windows上的Docker Desktop已启动
-
路径使用正斜杠
/或双反斜杠\\ -
检查防火墙设置,确保端口可访问
-
考虑使用
.dockerignore文件排除不必要的文件
选择哪种方式取决于你的具体需求:开发调试推荐方法二,生产环境推荐方法一。