【快学SpringBoot】SpringBoot+Docker构建、运行、部署应用
前言
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构建、运行、部署应用的更多相关文章
- springboot~使用docker构建gradle项目
这是一篇关系到四个知识点的文章,分别是java,docker,springboot和gradle,我们希望在java环境下,使用springboot框架,通过gradle去构建项目,然后把项目部署和运 ...
- Azure 实践(4)- CI/CD .netcore项目Docker构建及部署
上篇已介绍了.netcore项目构建的相关步骤,本篇继续完善 1.什么是CI/CD CI/CD 中的"CI"始终指持续集成,它属于开发人员的自动化流程.成功的 CI 意味着应用代码 ...
- IntelliJ IDEA web项目 工程构建运行部署
- 基于vue+springboot+docker网站搭建【七】制作后端spring-boot的docker镜像部署
制作spring-boot的docker镜像并部署 一.下载后端项目:https://github.com/macrozheng/mall 二.修改mall-admin项目的配置文件 修改applic ...
- SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲. 本文章主要讲述Docker.Jen ...
- springboot整合docker部署(两种构建Docker镜像方式)--2019-3-5转
原文:https://www.cnblogs.com/shamo89/p/9201513.html 项目结构 package hello; import org.springframework.boo ...
- springboot整合docker部署(两种构建Docker镜像方式)
项目结构 package hello; import org.springframework.boot.SpringApplication; import org.springframework.bo ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- SpringBoot使用Docker快速部署项目
1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器 ...
随机推荐
- Java进阶学习(4)之继承与多态.demo
多媒体数据库小练习 package com.dome; import java.util.ArrayList; public class Database { // private ArrayList ...
- Codeforces 1315A Dead Pixel (水题)
Screen resolution of Polycarp's monitor is a×ba×b pixels. Unfortunately, there is one dead pixel at ...
- Spring - Spring 常用注解
概述 简单整理一些 Spring 的注解 这个算是一个 水一波 类型的整理 内容不全 分类可能有的地方不会太符合逻辑 而且时间也不太充裕 先把自己想写的写下来, 然后随缘整理吧 约定 版本 Sprin ...
- h5页面调用相机功能
//accept:表示要打开的文件类型 capture:表示可以捕获到系统默认的设备 <input type="file" accept="image/*" ...
- 微信支付之H5支付
HoJe男孩子你要加油阿 前言准备材料H5支付请求的参数返回结果统一下单回调接口用到的工具类886 . 前言 大家好,分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于 ...
- 02-Spring的IOC示例程序(通过id获取对象)
*******通过IOC容器创建id对象并为属性赋值******** 整体结构: ①创建一个java工程 ②导包 ③创建log4j.properties日记配置文件 # Global logging ...
- STM32程序中 \r \n \r\n
1.用串口调试助手打印信息,程序换行时,最好还是用\r\n,光用\r或光用\n可能达不到换行的效果.
- js克隆一个对象
我们知道,对象类型在赋值的过程中其实是复制了地址,所以如果改变了一方,其他都会被改变.我们应该如何克隆一个对象,并且避免这种现象的发生呢? 方法一:Object.assign function cop ...
- 【应急响应】Windows 安全加固
一.补丁管理 运行cmd,输入systeminfo查看目前补丁信息 二.账户管理 gpedit.msc —>Windows设置—>安全设置—>本地设置—>账户设置 密码策略: ...
- ECMAScript 6.0
ES6怎么来的 ECMAScript 和 JavaScript ECMA 是标准,JS 是实现 ECMAScript 简称 ECMA 或 ES 历史版本 1996, ES1.0 Netscape 将 ...