将springboot jar应用打包成镜像并在docker运行成容器

本文详细介绍如何使用Dockerfile创建springboot应用的Docker镜像。从基础镜像选择到具体命令解释,包括如何复制文件、暴露端口及设置启动命令等。最后通过实例演示整个构建过程。

先看一下我的Dockerfile内容与服务器中的目录结构

上面 yibai-0.0.1-SNAPSHOT.jar 为springboot应用打成的jar包,Dockerfile为将应用打成镜像的配置文件

具体说下文件中的各个命令解释

 FROM  

指定构成镜像的基础镜像源,如这个项目需要依赖jdk环境

https://hub.docker.com可以在官方网站上找

镜像跟上版本号

ADD

复制本地文件到目标容器的系统文件中

EXPOSE

容器对外映射的端口

ENTRYPOINT

配置容器启动后执行的命令

 接着我们来构建镜像

(注意镜像名称后面有个点,注意镜像名称后面有个点,注意镜像名称后面有个点)

  输入docker build -t 跟你想要的镜像名称 .

输入docker images查看本地镜像仓库是否已经有了

然后我们跑下试试

已经可以请求了,是不是很简单,赶紧用你自己的项目来试试吧

参考文献:http://www.open-open.com/lib/view/open1423703640748.html

               :http://www.runoob.com/docker/docker-command-manual.html

                :http://www.docker.org.cn/book/docker/what-is-docker-16.html

### Spring Boot 打包 JAR 文件部署到 Docker 容器 #### 准备工作 为了实现将 Spring Boot 项目打包 JAR 文件通过 Docker 进行容器化部署,需要完以下几个核心步骤: --- #### 构建 Spring Boot 应用程序的 JAR 文件 通过 Maven 或 Gradle 工具可以轻松构建 Spring Boot 的可执行 JAR 文件。 对于基于 Maven 的项目,在项目的根目录下运行以下命令来生 JAR 文件: ```bash mvn clean package ``` 这会清理旧的目标文件夹将最新的应用程序编译为一个单独的 JAR 文件[^2]。默认情况下,JAR 文件会被放置在 `target` 目录中。 如果使用的是 Gradle,则可以通过以下命令生 JAR 文件: ```bash gradle bootJar ``` --- #### 创建 Dockerfile 文件 创建一个名为 `Dockerfile` 的文件用于定义 Docker 镜像构建过程。以下是典型的 Dockerfile 内容示例: ```dockerfile # 使用官方的基础 Java 镜像作为父镜像 FROM openjdk:17-jdk-slim # 将当前目录下的目标 JAR 文件复制到容器中的 /app/ 路径下 COPY target/*.jar /app/app.jar # 设置容器的工作目录 WORKDIR /app # 暴露应用所需的端口(假设 Spring Boot 默认监听8080) EXPOSE 8080 # 启动容器时自动运行应用启动命令 ENTRYPOINT ["java", "-jar", "/app/app.jar"] ``` 上述配置指定了基础镜像JAR 文件的位置以及服务暴露的端口号,设置了容器启动后的入口点[^4]。 --- #### 构建 Docker 镜像 确保已经安装好 DockerDocker Compose 后,可以在终端中导航到包含 `Dockerfile` 和生好的 JAR 文件的目录,然后运行以下命令以构建自定义镜像: ```bash docker build -t springboot-app . ``` 此命令会在当前目录查找 `Dockerfile` 按照其中的指令逐步构建一个新的 Docker 镜像,最终命名为 `springboot-app`[^3]。 --- #### 运行 Docker 容器 一旦构建镜像,就可以利用该镜像启动新的容器实例。例如,下面这条命令将会以前台模式启动容器绑定主机上的某个端口与容器内部的服务端口相对应: ```bash docker run -d -p 9090:8080 --name my-springboot-container springboot-app ``` 这里的 `-d` 参数表示以后台方式运行;`-p` 则用来设置宿主机和容器之间的网络端口映射关系;而 `--name` 是给新创建出来的容器赋予唯一的名字以便后续管理操作更加方便快捷。 另外还可以加上数据持久化的选项比如这样: ```bash docker run -d \ -p 9090:8080 \ -v $(pwd)/logs:/app/logs \ --name my-springboot-container \ springboot-app ``` 这段脚本不仅实现了基本功能还增加了日志记录位置共享的功能使得调试更简单高效。 --- #### 自动化流程 (Optional) 为了进一步简化开发运维一体化(CI/CD),可以借助 Jenkins 来自动化整个流水线作业——从源码检出、测试验证直到最后一步制作镜像推送远程仓库都可通过插件支持无缝衔接起来。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

soulbboy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值