使用dockerfile部署springboot应用
本章简单展示如何最短时间 把springboot应用打包成镜像并创建成容器。
准备工作:
1.安装docker ,保证执行docker version没有问题
2.拉下来一个jdk镜像 docker pull openjdk:8-jdk-alpine
1.创建一个简单的springboot项目
项目地址:https://github.com/honstat/sp-web.git

@RestController
public class HelloController {
@RequestMapping("/ping")
public String ping(){
return "ok";
}
}
App.class

@SpringBootApplication
public class App{
public static void main(String[] args) {
new SpringApplicationBuilder(App.class).run(args);
}
}
application.yaml

server:
port: 9098 spring:
application:
name: sp-web
直接启动访问
curl 127.0.0.1:9098/ping 能返回ok
应用算是创建好了,接下来是打包
pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId>
<artifactId>sp-web</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.5</version>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-tomcat</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>
</dependencies>
<build>
<finalName>sp-web</finalName>
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <artifactId>maven-war-plugin</artifactId>-->
<!-- <version>3.0.0</version>-->
<!--<!– <configuration>–>-->
<!--<!– <!–如果想在没有web.xml文件的情况下构建WAR,请设置为false。–>–>-->
<!--<!– <failOnMissingWebXml>false</failOnMissingWebXml>–>-->
<!--<!– </configuration>–>-->
<!-- </plugin>-->
<!-- </plugins>-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version> 2.6.1</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
ps:注释的部分 是打成war包的配置,目前是打jar包
2.打jar包


jar包启动方式
java -jar sp-web.jar

3.准备制作Dockerfile
1.创建一个目录,把jar包复制到dockers文件夹
mkdir dockers
cd dockers
创建Dockerfile文件
touch Dockerfile
拖到idea里面打开,开始编辑Dockerfile
FROM openjdk:8-jdk-alpine
ADD ./sp-web.jar /app.jar
ENTRYPOINT ["java","-jar","app.jar"]
解释一下,
第1行 FROM指令是拉取基础的镜像支持,这个springboot服务依赖jdk,必填的,如果基础镜像本地没有 docker images 列表找不到 就先docker pull xx 下来
第2行 ADD指令是把文件夹中的jar包 复制到镜像根目录下,到此镜像打包指令结束了
第3行 ENTRYPOINT 是在参加容器时执行的,作用是启动jar包,端口号在代码配置中指定了,这里不需要指定
4.制作镜像
在有Dockerfile文件的目录中执行命令
docker build 是生成镜像
-t webapp1.0 其中webapp1.0是指定镜像文件名称 有需要可以改名
. 是在当前文件中找Dockerfile文件,如果不在这个目录可以指定 -f /xx/Dockerfile

到此镜像生成完了,执行docker images指令查看

5.创建容器,运行web服务
先查看一遍 docker ps 代表查看正在运行的容器,目前暂无容器运行

docker run --name webapp -p 8080:9098 webapp1.0

创建容器的时候 会执行Dockerfile文件中的
ENTRYPOINT ["java","-jar","app.jar"]
所以web服务立即就跑起来了
调用web服务接口 curl 127.0.0.1:8080/ping

总结
本文先提醒大家做了准备工作安装docker 和拉下来基础镜像,为什么拉这个镜像,因为它小才100多M,而如果用tomcat做基础镜像,会变成接近600M 相当夸张。
然后创建简单的springboot应用,如果想用现成的,可以把我写的demo拉下来 git clone https://github.com/honstat/sp-web.git
接下来需要打包 生成.jar文件 ,其中需要注意pom文件的maven-plungin
Dockerfile 文件编写,注意大小写
生成镜像 创建容器
验证服务 curl 127.0.0.1:8080/ping
Dockerfile的好处就是一次编写 到处运行,基本不受环境限制。
好了,分享就先到这里~
使用dockerfile部署springboot应用的更多相关文章
- 利用Dockerfile部署SpringBoot项目
利用Dockerfile部署SpringBoot项目 1.创建一个SpringBooot项目并且打成jar包 2.在Linux中创建一个文件夹,来做docker测试 [root@izwz90lvzs7 ...
- 使用 IDEA 配合 Dockerfile 部署 SpringBoot 工程
准备 SpringBoot 工程 新建 SpringBoot 项目,默认的端口是 8080 ,新建 Controller 和 Mapping @RestController public class ...
- docker部署springboot项目
本文介绍一下docker如何部署springboot项目. 前提条件: 1.可以运行jar包的环境 2.机器上已经安装了docker 3.准备部署的springboot的jar包 4.Dockerfi ...
- 转 使用Docker部署 spring-boot maven应用
转自:https://blog.csdn.net/u011699931/article/details/70226504/ 使用Docker部署 spring-boot maven应用 部署过程分为以 ...
- Mac下 Docker部署SpringBoot应用
一.安装Docker环境 使用 Homebrew 安装 macOS 我们可以使用 Homebrew 来安装 Docker. Homebrew 的 Cask 已经支持 Docker for Mac,因此 ...
- mac和linux下使用Docker,部署SpringBoot项目到docker
主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...
- 提升10倍生产力:IDEA远程一键部署SpringBoot到Docker
作者:陶章好 juejin.im/post/5d026212f265da1b8608828b 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容 ...
- IDEA部署Spring-boot到Docker容器
一.准备工作 idea安装Docker插件 centos7系统安装docker 二.打开docker远程端口 1. 编辑docker.service文件 vim /usr/lib/systemd/sy ...
- 使用Docker部署Spring-Boot+Vue博客系统
在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...
随机推荐
- C#面向抽象编程第二讲
抽象编程怎么说呢,以观察者模式为例: 观察者模式有两个对象,一个是观察者,一个是可观察者(字面翻译很别扭observable),消息发布者(提供者). 第一层如下,三个对象A.B.C分别有一个接收消息 ...
- eNSP路由器启动#号问题排查
1.删除拖出来的设备,重新拖出来一台---我用过[有时候好使] 2.确保Ensp的设置-工具-Virtual Box安装目录是否正确--我也遇到过[尤其是卸载掉Virtual Box重装之后] 3.确 ...
- 2021.11.14 CF1583E Moment of Bloom(LCA+图上构造)
2021.11.14 CF1583E Moment of Bloom(LCA+图上构造) https://www.luogu.com.cn/problem/CF1583E 题意: She does h ...
- java class 文件格式解析
前言 大约5年前,想研究javaassistant,cglib等字节码操作的相关类库,来对class进行增强,当要到要操作字节码的时候,发现无法继续下去了,只能放弃. 学习jvm字码,需要理解clas ...
- Google kickstart 2022 Round A题解
Speed Typing 题意概述 给出两个字符串I和P,问能否通过删除P中若干个字符得到I?如果能的话,需要删除字符的个数是多少? 数据规模 \[1≤|I|,|P|≤10^5 \] 双指针 设置两个 ...
- HashMap和Hashtable以及ConcurrentHashMap的区别
HashMap和Hashtable的区别 何为HashMap HashMap是在JDK1.2中引入的Map的实现类. HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部 ...
- 漏洞复现:MS12-020 远程桌面协议RDP远程代码执行漏洞
漏洞复现:MS12-020 远程桌面协议RDP远程代码执行漏洞 攻击机:Kali2019 靶机:Win7 64位 解题步骤: 1.打开Kali2019和Win7 64位 ,确定IP地址是多少 2.确定 ...
- 二叉查找树速通攻略 图文代码精心编写(Java实现)
说在前面 如题目所言 这篇文章为了给下一篇二叉查找数做铺垫和前期知识准备,以便大家有良好的阅读体验,本来想合在一起的,但觉得有些长,所以就拆开了哈哈哈,还是新手向,两篇文章有些长,但如果能认真看下去, ...
- 「BUAA OO Unit 2 HW8」第二单元总结
「BUAA OO Unit 2 HW8」第二单元总结 目录 「BUAA OO Unit 2 HW8」第二单元总结 Part 0 前言 Part 1 第五次作业 1.1 作业要求 1.2 架构设计 1. ...
- Java 15 新特性:文本块
大家好,我是DD,今天继续来学点Java的新特性! 假设有这样一个场景,我们需要做一个工具.用来自动生成项目文档,文档可以通过浏览器查看,所以最后产出物肯定是一堆html文件.为了让这些html文件更 ...