使用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的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...
随机推荐
- Python 中的鸭子类型和猴子补丁
原文链接: Python 中的鸭子类型和猴子补丁 大家好,我是老王. Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这 ...
- “九韶杯”河科院程序设计协会第一届程序设计竞赛 D数列重组 next_permutation
"九韶杯"河科院程序设计协会第一届程序设计竞赛 D数列重组 next_permutation 题目 原题链接: https://ac.nowcoder.com/acm/conte ...
- 使用C#制作九九
效果图如下 源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...
- formData一般用法,移动端,pc端都可以用,pc有兼容性问题
其实FormData是一个 对象他是一个比较新的东东(其实我也不知道改叫什么好) 利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个& ...
- Java语言学习day06-7月05日
今日内容介绍流程控制语句之循环语句循环高级###10for循环_1 * A: for循环_1 * a: 使用格式 for(初始化变量 ; 条件 ; 增量){ 循环体; } * b: 各模块解释 初始化 ...
- @Resource与构造函数踩坑
(虽然解决了需求,但我还是没搞懂为什么构造函数结束后,调用userMapper注入还是为空!) 首先,我有一个没有问题的userMapper类,用于处理user的数据库处理. 其次,我在另一个类里面使 ...
- @Transactional的使用与失效
@Transactinonal 注解在方法抛出RuntimeException类及其子类时.Error类及其子类时会回滚当前事务,使sql不提交: 只能作用于public的方法:写在类上时,代表给该类 ...
- python数据类型、用户交互和运算符
基本数据类型 1.字典dict(dictionary) 能够准确的记录储存的信息 """ 大括号里面 放多个元素 之间用逗号隔开 元素为K:V键表示储存 K相对于V一般表 ...
- OPRF
在PSI中经常用到OPRF技术,现在系统学习一下. PRF Pseudo Random Function,伪随机函数,主要就是用来产生为伪随机数的. 伪随机数 什么伪随机数? 伪随机数是用确定性的算法 ...
- Elasticsearch高级之-集群搭建,数据分片
目录 Elasticsearch高级之-集群搭建,数据分片 一 广播方式 二 单播方式 三 选取主节点 四 什么是脑裂 五 错误识别 Elasticsearch高级之-集群搭建,数据分片 es使用两种 ...