前言

Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情。当前,前提是得有Docker的基础。

源码在文末

文末有项目源码的github地址

构建一个SpringBoot项目

本人最早的一篇文章,就是教大家如何使用Spring Initialise工具,快速的创建一个SpringBoot项目,如果还不懂的,可以翻一下本人的第一篇文章,这里就不多讲了。下面贴一下主要的文件内容:

pom文件的大部分内容这里就不贴了,主要贴关键的内容,主要的就是maven-docker的打包插件:

<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->

这里的docker.image.prefix值为:

<docker.image.prefix>happy</docker.image.prefix>

dockerDirectory配置了Dockerfile的路径为:src/main/docker,所以,我们需要在src/main目录下,创建docker目录,然后创建Dockerfile文件。整体的目录结构如下:

Dockerfile

Dockerfile文件内容如下:

FROM openjdk
VOLUME /tmp
ADD springboot-docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

到这里,已经完成了SpringBoot+Docker的配置了,接下来就是打包部署了。

添加测试接口

为了方便测试,可以添加一个GET请求的接口,如下:

@SpringBootApplication
@RestController
public class SpringbootDockerApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootDockerApplication.class, args);
} @GetMapping(value = "/test")
public Object test() {
return "Hello SpringBoot with Docker!";
} }

maven打包

使用maven构建Dockerfile的命令如下:(先把maven和Docker都设置为国内的源,否则需要build比较长的时间)

mvn package docker:build

在springboot-docker目录根路径下执行此命令即可。

需要本地安装了Docker才能够打包成功,否则会报错。关于Docker的安装,Linux的用户可以根据我之前的文章进行安装,其他系统的用户可以自行搜索安装即可。推荐使用Linux。

比如本人,Docker是安装在Linux虚拟机上的,直接把springboot-docker目录拷贝到Linux机器上:

执行打包命令,输入如下:

看到BUILD SUCCESS即表示构建成功了,这时候就可以通过docker images命令,查看我们构建的镜像了:

镜像构建完之后,我们还可以把它推到Docker的仓库上。这里就不展开来讲了。

使用该镜像创建容器

命令如下:

docker run -it -d --name springboot -p 8080:8080 happy/springboot-docker

这里创建并且启动一个容器,命名为springboot,映射端口为8080:8080

可以通过如下命令查看启动日志:

docker logs springboot

访问测试接口

源码下载

源码我放在github上,欢迎大家关注:

https://github.com/Happy4Java/hello-springboot

关注公众号领资料

搜索公众号【Happyjava】,回复【电子书】和【视频】,即可获取大量优质电子书和大数据、kafka、nginx、MySQL等视频资料

原创声明

本文发布于掘金号【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:(http://blog.happyjava.cn)[http://blog.happyjava.cn]。欢迎转载,但须保留此段声明。

【快学SpringBoot】SpringBoot+Docker构建、运行、部署应用的更多相关文章

  1. springboot~使用docker构建gradle项目

    这是一篇关系到四个知识点的文章,分别是java,docker,springboot和gradle,我们希望在java环境下,使用springboot框架,通过gradle去构建项目,然后把项目部署和运 ...

  2. Azure 实践(4)- CI/CD .netcore项目Docker构建及部署

    上篇已介绍了.netcore项目构建的相关步骤,本篇继续完善 1.什么是CI/CD CI/CD 中的"CI"始终指持续集成,它属于开发人员的自动化流程.成功的 CI 意味着应用代码 ...

  3. IntelliJ IDEA web项目 工程构建运行部署

  4. 基于vue+springboot+docker网站搭建【七】制作后端spring-boot的docker镜像部署

    制作spring-boot的docker镜像并部署 一.下载后端项目:https://github.com/macrozheng/mall 二.修改mall-admin项目的配置文件 修改applic ...

  5. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲. 本文章主要讲述Docker.Jen ...

  6. springboot整合docker部署(两种构建Docker镜像方式)--2019-3-5转

    原文:https://www.cnblogs.com/shamo89/p/9201513.html 项目结构 package hello; import org.springframework.boo ...

  7. springboot整合docker部署(两种构建Docker镜像方式)

    项目结构 package hello; import org.springframework.boot.SpringApplication; import org.springframework.bo ...

  8. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...

  9. SpringBoot使用Docker快速部署项目

    1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器 ...

随机推荐

  1. css全站字体,中文英文不同,粗细统一

    @font-face { font-family: vwfont; src: url(/shop-m/public/fonts/VWText-Regular.otf); } @font-face { ...

  2. Flutter 中的常见的按钮组件 以及自 定义按钮组件

    一.Flutter 中的按钮组件介绍   Flutter 里有很多的 Button 组件很多,常见的按钮组件有:RaisedButton.FlatButton.   IconButton.Outlin ...

  3. 连接查询:inner join,left join,right join

    感谢原创:https://blog.csdn.net/plg17/article/details/78758593 准备工作: 1)新建两张表a_table和b_table: create table ...

  4. PHPStorm设置Ctrl+滚轮调整字体大小

    1.点击左上角的File,再点击setting: 2.Editor->General,选择Change font size (Zoom) with Ctrl+Mouse Wheel: 3.点击O ...

  5. PHP基础学习笔记1

    一.基本语法 1.1 形式 PHP 脚本以 <?php 开始,以 ?> 结束: <?php //php代码 ?> 1.2 注释 单行注释 //这是单行注释 多行注释 /* 这是 ...

  6. SQL Server不同服务器不同数据库间的操作

    什么是跨服务器操作? 跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库上进行相关的数据库操作,比如增删改查. 为什么要进行跨服务器操作 随着数据量的增多,业务量的扩张,需要在不 ...

  7. 3、高级方法(Advanced Recipes)

    学习目录:树莓派学习之路-GPIO Zero 官网地址:https://gpiozero.readthedocs.io/en/stable/recipes_advanced.html 环境:Ubunt ...

  8. List(数组)里面常用的属性和方法

    常用属性: length 长度 reversed 翻转 isEmpty 是否为空 isNotEmpty 是否不为空常用方法: add 增加 addAll 拼接数组 增加多个数据 list.addAll ...

  9. 【HTML】输入密码访问

    <script> (function(){ if('{{ page.password }}'){ if (prompt('请输入文章密码') !== '{{ page.password } ...

  10. 【CSS选择器】

    " 目录 一.介绍 二.语法 三.引入方式 1. 行内样式 2. 嵌入式 3. 外部样式 四.选择器 1. 基本选择器 2. 组合选择器 3. 属性选择器 4. 不常用选择器 5. 分组和嵌 ...