如何使用Docker打包构建Java项目然后部署发布?

本文详细介绍了如何使用Docker构建包含Maven的Java17基础镜像,创建SpringBoot项目,编写Dockerfile,打包并部署Java项目,最后通过命令行验证服务运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

今天我们来讲下如何使用Docker打包构建Java项目并且完成部署发布。

前期准备,需要安装好docker。

以及一个需要安装好Maven的镜像,可以参考下面的文章。

构建一个包含mvn命令的Java 17基础镜像-CSDN博客

一、打包构建Java项目镜像

1、创建Java项目目录,执行如下命令。

mkdir -p /docker/hello/
cd /docker/hello/

2、创建SpringBoot代码。

3、编写Dockerfile文件,内容如下。

vim Dockerfile
# 使用Alpine Linux搭配OpenJDK 17含Maven的版作为打包镜像
FROM ayzen/openjdk:17-jdk-alpine as builder

# 设置工作目录
WORKDIR /www

# 复制项目源码和构建脚本到容器工作目录
COPY . /www

# 在容器内执行Maven,生成可执行jar文件
RUN mvn clean package -DskipTests

# 新建一个更小的基础镜像用于运行
FROM openjdk:17-jdk-alpine

# 设置工作目录
WORKDIR /www

# 将构建阶段产生的jar文件复制到运行阶段的镜像中
COPY --from=builder /www/target/hello.jar /www/hello.jar

# 暴露应用端口
EXPOSE 8080

# 设置容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "/www/hello.jar"]

4、构建镜像,执行如下命令。

docker build -t ayzen/hello .

构建正常情况会返回如下内容。

5、至此,Java项目的镜像已构建完成。

二、部署发布Java项目

1、启动Java项目容器,执行如下命令。

docker run -d -p 8080:8080 ayzen/hello

2、测试验证请求,执行如下命令。

curl http://127.0.0.1:8080/hello

正常返回说明Java项目服务已正常运行。

3、至此,Java项目已部署发布完成。

总结

今天讲了如何使用Docker打包构建Java项目并且发布的内容,步骤也比较简单。

1、创建Java项目代码或者拉取Java项目代码,编写Dockerfile文件,构建项目镜像。

2、使用项目镜像运行容器,测试验证服务。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

### 使用 Docker 打包部署 Java 项目的具体流程 #### 创建 Java 项目目录 为了便于管理文件结构,首先需要创建一个专门用于存放 Java 项目的目录。可以通过以下命令完成此操作: ```bash mkdir -p /docker/hello/ cd /docker/hello/ ``` 这一步是为了初始化工作环境并进入目标路径[^1]。 #### 编写 Dockerfile 文件 在项目根目录下创建 `Dockerfile` 文件,该文件描述了如何构建容器镜像以及运行应用程序所需的配置。以下是典型的 `Dockerfile` 内容示例: ```dockerfile # 基础镜像 FROM openjdk:17-jdk-slim # 设置工作目录 WORKDIR /app # 将本地的 jar 包复制到容器中 COPY target/my-app.jar /app/app.jar # 暴露应用端口 EXPOSE 8080 # 运行 Java 应用程序 ENTRYPOINT ["java", "-jar", "/app/app.jar"] ``` 上述脚本指定了基础镜像、设置了工作目录、拷贝了编译后的 JAR 文件,并暴露了服务监听的端口号[^2]。 #### 构建 Docker 镜像 当准备好 `Dockerfile` 和其他必要的资源后,就可以利用下面这条命令来生成 Docker 镜像: ```bash docker build -t my-java-application . ``` 这里的 `-t` 参数用来命名新创建的镜像,而最后的那个点代表基于当前目录内的 `Dockerfile` 来执行构建过程[^3]。 #### 启动 Docker 容器 一旦成功制作好镜像,便能够借助下列指令将其实例化为正在运行的服务: ```bash docker run -d --name running-java-app -p 8080:8080 my-java-application ``` 这段代码片段中的选项解释如下: - `-d`: 表明以后台模式启动; - `--name`: 给容器赋予一个易于识别的名字; - `-p`: 映射主机与容器之间的网络端口关系; 这样就完成了整个从开发到上线的过程概述。 ```python print("Java application deployed via Docker successfully!") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayzen1988

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值