Docker实现发布一个springboot项目

 更新时间:2026年04月23日 15:21:59   作者:Pisces_224  
文章介绍了使用Docker打包SpringBoot项目的过程,包括基本用法、maven源码打包法、使用maven插件打包和docker-maven-plugin插件打包,并详细讲述了每种方法的操作步骤和配置细节,最后总结了使用插件打包的优势

1、新建SpringBootDemo项目并打包

一般情况下,我们通过执行:

maven clean
maven compile
maven package

项目在本地会产生target目录,下生成了一个项目jar包。

拿一个很简单的demo作为例子:

页面:

2、使用Dockerfile打包(基础用法)

在与target同级,也就是项目根目录下新建一个文件file命名为: Dockerfile

以下基本参数:

FROM openjdk:8
# 指定可以被宿主机文件挂载目录
VOLUME /opt/demo/
# 指定路径
WORKDIR /opt/demo/
# 添加 springboot-web-demo-0.0.1-SNAPSHOT.jar 包到workdir 以 web.jar保存
ADD ["springboot-web-demo-0.0.1-SNAPSHOT.jar", "web.jar"]
EXPOSE 8090
ENTRYPOINT ["java", "-jar", "/web.jar"]

然后使用远程工具(我用的Xftp7),将jar包和Dockerfile文件拖到Linux服务器新建的目录下:

命令行进入该目录下执行镜像制作:

docker build -t web:test .  # 镜像名:tag   当下目录

查看镜像:

docker images

然后启动运行:

docker run -d -p 8090:8090 --name test web

映射端口到外界;

容器命名为test,镜像为生成的web

浏览器访问:

失败。

(我项目端口是8080,暴露8090,不对应) 

这里注意端口的映射问题!

  • 项目application.yml 中端口 要和 EXPOSE 端口保持一致;
  • 启动容器时 -p 宿主机端口 : 容器端口,宿主机端口可以任意指定,容器端口即EXPOSE的端口。

否则容器可以正常启动,但是端口未暴露,访问时仍然访问项目自己的端口(在linux下,外界访问不到)

重新修改dockerfile并打包镜像运行后:

curl  ip:port

浏览器访问:

总结:

1、本地maven 打包 + 创建Dockerfile文件2、上传到服务器下Docker环境3、制作镜像4、运行

可以看出,貌似并没有为我们的项目部署带来什么便利?仅仅这样,无法体现docker的优势。

进一步maven源码打包法

在Linux docker环境下,可以安装好git、maven,利用:

  • ① git拉取仓库代码;
  • ② mvn打包命令就可以去掉步骤一、二;
  • ③ 制作镜像
  • ④ run运行容器

但是仍然不够简单。

如果环境中没有安装maven,请手动安装,脚本如下:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
# yum-config-manager --enable epel-apache-maven
// 安装maven
# yum install -y apache-maven

1、上传原码到docker环境中(一般是git/svn直接拉取源码)

2、maven打包

mvn clean package

生成的jar在同级target目录下

3、执行docker命令生成镜像

dockerfile文件内容

命令创建镜像

3、更进一步(maven插件打包)

即适用于生产环境下,IDEA代码开发完毕,利用docker-maven插件直接一行命令编译打包生成镜像并推送到Docker主机环境下。

之后只需要Docker下运行 run命令即可运行项目。

docker-maven-plugin

里面集成了Docker客户端,通过docker的api接口发送docker命令。

spring-boot-maven-plugin

这个是Spring Boot官方的插件,在2.x的某个版本(2.3.x)提供了Docker镜像构建能力。

下面,演示一个maven插件:docker-maven-plugin用法,来实现。

前提条件

1、需要我们windows上安装docker服务

2、需要docker服务配置http仓库接口,windows上docker服务配置如下(传统配置模式无权限修改文件)

本地环境配置

1、windows上安装docker-toolbox,傻瓜安装即可。

2、打开Docker Quickstart Terminal终端,等待初始始化完成后。

3、输入docker-machine env命令,返回docker服务的api接口和证书位置,如下:

4、输入docker-machine ssh命令,进入sh环境中,配置http仓库路径:

修改文件配置(当前用户是docker不是root,要sudo提升至root):

sudo vi /var/lib/boot2docker/profile

5、修改完成,保存。重启docker服务

sudo /etc/init.d/docker restart

项目环境配置maven插件

在我们的工程pom中加入docker-maven-plugin插件的配置,如下:

1、其中,imageName配置镜像的全路径名,即指定私库的名称

2、dockerHost和dockerCertPath对应配置上一步中docker的api和证书值

打包运行

以idea为例,整个项目装配完成,只需要操作maven的一二三步骤,即直接镜像进入仓库,整个过程极为便利。

还可以省去多次点击,直接一句mvn命令完成打包上传:

mvn clean package docker:build -DpushImage

校验镜像仓库结果

至此,我们的服务器环境,已经可以直接运行docker run 镜像启动容器了。

4、总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker 查询或获取私有仓库(registry)中的镜像的方法

    docker 查询或获取私有仓库(registry)中的镜像的方法

    这篇文章主要介绍了docker 查询或获取私有仓库(registry)中的镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 卸载Docker时保留本地镜像和容器方式

    卸载Docker时保留本地镜像和容器方式

    文章讲述了如何在Linux、Windows和Mac系统中备份和恢复Docker镜像和容器,备份过程包括列出本地镜像、保存镜像和导出容器,恢复过程则涉及卸载Docker、重新安装Docker以及使用dockerload和dockerimport命令恢复镜像和容器
    2024-11-11
  • 卸载docker-compose实现过程

    卸载docker-compose实现过程

    本文详细描述了如何通过命令行卸载Docker Compose,包括检查已安装的包名、使用`yum remove`卸载、清理残留文件、验证卸载结果以及注意事项
    2025-12-12
  • 详解使用Docker快速部署ELK环境(最新5.5.1版本)

    详解使用Docker快速部署ELK环境(最新5.5.1版本)

    这篇文章主要介绍了详解使用Docker快速部署ELK环境(最新5.5.1版本),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker nginx容器部署前端项目全过程

    Docker nginx容器部署前端项目全过程

    用户配置Nginx数据卷映射,将本地文件挂载至容器内/usr/share/nginx/html目录,部署两个前端项目分别绑定18080和18081端口,确保配置文件与前端资源同步更新
    2025-09-09
  • k3d入门指南之在Docker中运行K3s的详细教程

    k3d入门指南之在Docker中运行K3s的详细教程

    在本文中,我们将简单了解k3d,这是一款可让您在安装了Docker的任何地方运行一次性Kubernetes集群的工具,此外在本文中我们还将探讨在使用k3d中可能会出现的一切问题,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • 如何查看docker镜像的dockerfile

    如何查看docker镜像的dockerfile

    这篇文章主要介绍了如何查看docker镜像的dockerfile问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • docker-compose部署nacos 2.2.3的详细过程

    docker-compose部署nacos 2.2.3的详细过程

    这篇文章主要介绍了docker-compose部署nacos 2.2.3的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • docker compose 使用教程

    docker compose 使用教程

    这篇文章主要介绍了docker compose 使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Docker Runc容器生命周期详细介绍

    Docker Runc容器生命周期详细介绍

    这篇文章主要介绍了Docker Runc容器生命周期详细介绍的相关资料,文章分析runc的容器生命周期的抽象、内部实现以及状态转换图。理解了runc的容器状态转换再对比理解docker client提供的容器操作命令的语义会更容易些
    2016-12-12

最新评论