如何将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