如何将java项目打包成docker镜像

阅读数:104 评论数:0

跳转到新版页面

分类

应用软件

正文

一、准备Java项目

1、使用构建工具将项目打包成一个可运行jar文件

mvn clean package

2、jar文件

    打包完成后,生成的 .jar 文件通常位于target/目录

project-root/
├── src/                # Java 源代码
├── target/             # Maven 构建输出目录
│   └── your-app.jar    # 打包后的 JAR 文件
├── pom.xml             # Maven 配置文件
├── Dockerfile          # Docker 构建文件
└── README.md           # 文档文件

二、创建Dockerfile

在项目根目录创建一个名为 Dockerfile 的文件,用于定义如何构建 Docker 镜像。以下是一个适用于 Java 项目的 Dockerfile 示例:

1、单文件部署

# 使用官方 OpenJDK 镜像作为基础镜像
FROM openjdk:17-jdk-slim

# 维护者信息(可选)
LABEL maintainer="your_email@example.com"

# 创建工作目录
WORKDIR /app

# 将打包好的 JAR 文件复制到镜像中
COPY target/your-app.jar /app/your-app.jar

# 暴露应用运行端口
EXPOSE 8080

# 指定启动命令
CMD ["java", "-jar", "your-app.jar"]

2、多阶段构建 (适用于源代码构建 )

如果不想手动构建 .jar 文件,可以使用多阶段构建直接在镜像中完成:

# 第一阶段:构建阶段
FROM maven:3.8.6-openjdk-17 AS builder
WORKDIR /app
COPY . .
RUN mvn clean package -DskipTests

# 第二阶段:运行阶段
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=builder /app/target/your-app.jar your-app.jar
EXPOSE 8080
CMD ["java", "-jar", "your-app.jar"]

三、构建 Docker镜像

在项目根目录运行以下命令:

docker build -t java-app .

 

  • java-app 是镜像的名称,可以根据需要修改。
  • . 表示使用当前目录作为上下文。

四、运行Docker容器

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

 

  • -d:后台运行容器。
  • -p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。
  • --name java-app-container:指定容器名称。
  • java-app:镜像名称。

五、推送到Docker Registry(可选)

1、登录

docker login

2、镜像打标签

docker tag java-app your_dockerhub_username/java-app:latest

3、推送镜像

docker push your_dockerhub_username/java-app:latest

六、多环境支持(可选)

可以在 Dockerfile 中设置环境变量,用于动态配置应用:

ENV APP_PORT=8080
CMD ["java", "-jar", "your-app.jar", "--server.port=${APP_PORT}"]

在运行容器时,通过 -e 参数传递变量:

docker run -d -p 9090:8080 -e APP_PORT=9090 --name java-app-container java-app

 

 




相关推荐

dockerfile-maven-plugin主要作用是在项目构建的时候生成项目的docker镜像文件。 正常情况下,我们开发一个应用程序后,会使用maven进行打包,生成对应的j

一、准备vue项目 1、确保项目可以正常运行。 project-root/ ├── dist/ # Vue 构建后的静态文件 ├── nginx.conf