前言

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. bbs系统的相关知识点

    1.注册功能 1.注册功能往往都会由很多校验性的需求 所以这里我们用到了forms组件 项目中可能有多个地方需要用到不同的forms组件 为了解耦合 但是创建一个py文件 专门用来存放项目用到的所有的 ...

  2. js语言简介

    JS语言概述 JS语言简史 JS语言的起源 网景(Netscape Communication Corperation),1994年,推出第一款商用浏览器,网景浏览器(Netscape Navigat ...

  3. pysftp-tools

    import pysftp import paramiko import os import unittest import json import warnings warnings.filterw ...

  4. CentOS7重启和关机

    重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.shutdown -r 2 ...

  5. 深度学习之反向传播算法(BP)代码实现

    反向传播算法实战 本文仅仅是反向传播算法的实现,不涉及公式推导,如果对反向传播算法公式推导不熟悉,强烈建议查看另一篇文章神经网络之反向传播算法(BP)公式推导(超详细) 我们将实现一个 4 层的全连接 ...

  6. 一张linux光盘查看是哪个版本号的方法

    在此查看版本号,方法如下:打开光盘,查找rpm包中的release,就是版本号.

  7. ST股

    一.简介: 意即“特别处理”.该政策针对的对象是出现财务状况或其他状况异常的. 1998年4月22日,沪深交易所宣布,将对财务状况或其它状况出现异常的上市公司股票交易进行特别处理(Special tr ...

  8. 3 爬虫cookie的处理办法

    cookie的应用和处理 - cookie:服务器端记录客户端的相关状态 - 处理cookie的方式: - 手动处理:不建议 页面找隐藏的标签,获取value - 自动处理:会话对象Session,该 ...

  9. 【Python与线程】

    "   目录 一.全局解释器锁GIL 二.Python线程模块的选择 三.线程的创建 三.锁机制 四.信号量 五.事件 六.条件 七.定时器 八.线程队列 九.线程池 补充:线程安全 imp ...

  10. 好用的px转rem插件cssrem

    下载本项目,比如:git clone https://github.com/flashlizi/cssrem 进入packages目录:Sublime Text -> Preferences - ...