Docker部署SpringBoot应用的实现步骤

目录
  • 前言
  • Dockerfile
    • 什么是 Dockerfile?
    • Dockerfile语法
  • 打包SpringBoot项目
    • 在本地将SpringBoot应用打包成jar
  • 准备jar包和Dockerfile
    • 编写Dockerfile
  • 使用工具将jar和Dockerfile上传到服务器
  • 构建镜像
  • 查看镜像
    • 创建并运行容器
    • 查看正在运行的镜像
  • 查看日志

前言

部署项目时可能会需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。而Docker确巧妙的解决了这些问题,Docker为了解决依赖的兼容问题的,采用了两个手段:

  1. 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
  2. 将每个应用放到一个隔离容器去运行,避免互相干扰

本文将讲解如何使用Docker来部署我们平时用SpringBoot开发的项目:

Dockerfile

什么是 Dockerfile?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

Dockerfile语法

构建自定义的镜像时,并不需要一个个文件去拷贝,打包。

我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。

而描述上述信息的文件就是Dockerfile文件。

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

打包SpringBoot项目

准备项目:

项目端口

server.port=8080

在templates文件夹下新建index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Docker部署SpringBoot应用</title>
</head>
<body>
<h1>Docker部署SpringBoot应用</h1>
<img src="/static/img/2.jpg" alt="" width="100%">
</body>
</html>

定义主页Controller,跳转到index

@Controller
public class indexController {

    @RequestMapping("/")
    public String index(){
        return "index";
    }
}

在本地预览效果:

在本地将SpringBoot应用打包成jar

准备maven-compiler-plugin插件

<build>
	<!--编译打包后的文件包名-->
	<finalName>app</finalName>
	<plugins>
		<plugin>
			<!--GAV坐标(G组织id,A项目id,V版本号)-->
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.8.1</version>
			<!--配置:
		    一般而言,target与source是保持一致的,但是,有时候为了让程序能在其
		    他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不
		    支持的语法),会存在target不同于source的情况-->
			<configuration>
				<!--源代码使用的JDK版本-->
				<source>1.8</source>
				<!-- 需要生成的目标class文件的编译版本 -->
				<target>1.8</target>
				<!-- 字符集编码,防止中文乱码 -->
				<encoding>UTF-8</encoding>
			</configuration>
		</plugin>
	</plugins>
</build>

maven是个项目管理工具,如果不告诉它代码要使用什么样的jdk版本编译,它就会用编译插maven-compiler-plugin默认的jdk版本来处理,这样就容易出现版本不匹配的问题,以至于可能导致编译不通过的问题。例如代码中要是使用上了Java8的新特性,比如函数式编程,但是maven在编译的时候使用的是Java7,那这一段代码是完全不可能编译成.class文件的。为了避免出现这种情况,在构建maven项目的时候,我习惯性第一步就是配置maven-compiler-plugin插件,指定项目源码的jdk 版本,编译后的 jdk 版本,以及编码方式。

然后执行clean,最后执行package进行项目打包

出现BUILD SUCCESS说明打包成功了

打包成功后会出现target文件夹,目录下就会有刚刚打包的jar包

准备jar包和Dockerfile

复制jar到桌面或自定义位置,在本地创建编写Dockerfile文件(注:名字必须为Dockerfile,去掉后缀名)

编写Dockerfile

Dockerfile指令

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

Dockerfile说明

FROM java:8-alpine:

基于java8构建镜像,默认构建java镜像需要安装配置环境变量,而java:8-alpine这个镜像已经帮我们把前面的步骤都做完了

COPY ./app.jar /tmp/app.jar

复制jar包

ENTRYPOINT java -jar /tmp/app.jar

入口命令

使用工具将jar和Dockerfile上传到服务器

上传位置看个人,我存放的位置:/tmp/docker

cd tmp
mkdir docker

选择上传文件

上传到/tmp/docker目录下

构建镜像

进入上传文件的目录:cd /tmp/docker,输入ls查看文件

输入命令构建镜像

docker build -t test:1.0 .

格式:docker build -t 镜像名称:版本号 Dockerfile所在目录路径

命令说明:

build:docker的二级命令

  • 构建镜像

-t

  • -名称: 一般的镜像名称格式:名称:版本号(test:1.0)

.

  • Dockerfile所在目录,因为我们已经进入了Dockerfile所在的目录,.代表当前目录

可以看到构建镜像的时候会以我们编写Dockerfile的三条命令分为3个步骤执行

查看镜像

查看Docker中的镜像命令:

docker images

可以看到我们自定义镜像test

创建并运行容器

运行Docker镜像命令:

docker run --name springboot -p 8080:8080 -d test:1.0

命令说明:

docker run: docker二级命令

  • 创建并运行容器

--name

  • 定义容器名称,后面跟上容器名称(springboot)

-p端口映射

  • 左边端口为Linux的端口 ,右边为容器的端口号
  • 将linux端口映射在容器端口号上,这样访问linux端口等于访问容器端口号

-d

  • 后台运行容器 ,否则退出之后容器就会停止运行

test:1.0–>镜像名称

  • 选择自定义镜像test 的1.0版本来创建容器

创建并运行容器成功!

查看正在运行的镜像

正在运行的镜像命令

docker ps

浏览器访问服务器的8080端口

手机访问:

查看日志

查看容器日志命令

docker logs -f springboot

说明:

查看容器日志但是不是实时更新,想要查看新的日志还需要重复运行

docker logs + 容器名称

实时更新日志

docker logs -f + 容器名称

Docker部署SpringBoot应用教程结束!

到此这篇关于Docker部署SpringBoot应用的文章就介绍到这了,更多相关Docker部署SpringBoot应用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker compose部署SpringBoot项目连接MySQL及遇到的坑

    前面使用docker简单部署了下SpringBoot项目并介绍了什么是Dockerfile,如果是镜像比较多的情况下如何一键交付呢?Docker-compose!,理解了Docker-compose后面学习K8s就会好理解一些 一.安装docker-compose 环境Centos7 //下载docker-compose curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-

  • idea整合docker快速部署springboot应用的详细过程

    目录 一.前言 二.环境及工具 三.安装docker以及配置远程连接 四.idea连接远程docker 一.前言 容器化一词相信大家已经不陌生了,听到它我们可能会想到docker.k8s.jenkins.rancher等等.那么今天我来说一下idea如何使用docker快速部署springboot应用. 二.环境及工具 windows10(开发) centos 7.6 (部署) idea docker xshell 三.安装docker以及配置远程连接 安装docker步骤网上有很多,在这里还是

  • 详解docker部署SpringBoot及替换jar包的方法

    关于docker的安装和使用,可以看看之前这两篇文章.docker kubernetes dashboard安装部署详细介绍和Docker如何使用link建立容器之间的连接.这篇文章主要介绍如何在docker上部署springboot项目.关于如何创建springboot项目可以看看这篇文章IDEA上面搭建一个SpringBoot的web-mvc项目遇到的问题 本文主要介绍docker部署springboot的三种方式,分别是:入门方式.jar包替换部署的方式和脚本部署方式,一步步来手把手教程.

  • docker部署springboot和vue项目的实现步骤

    A. docker 部署 springboot项目 一.springboot项目编译打包 二.在项目根目录创建Dockerfile文件 FROM openjdk:8-jdk-alpine VOLUME /tmp ADD ./target/demo-0.0.1-SNAPSHOT.jar demo.jar RUN sh -c 'touch /demo.jar' ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.se

  • IDEA集成docker部署springboot项目的全过程

    目录 1.IDEA下载docker插件 2.云服务器docker 2.1 docker的安装 2.2 停止docker服务 2.3 docker配置文件修改 2.4 刷新配置文件 2.5 启动docker服务 2.6 防火墙增加2375端口 2.7 阿里云增加安全组规则 2.8 测试远程HTTP连接 3. maven项目打包 3.1 打包插件 3.2 资源文件的打包及打包后的位置 3.3 docker插件 3.4 clean.install和docker build 4.遇到的坑 5.参考 1.

  • docker安装tomcat并部署Springboot项目war包的方法

    说来也简单,直接上教程吧,博主 1.首先在启动docker service docker start 2.拉取tomcat镜像. docker pull tomcat:8-jdk8 如果不加后面的8-jdk8  标签的话,会默认拉取latest,也就是最新的官方版本 3.安装完成后,做作容器,并启动tomcat docker run --name tomcat -p 8080:8080 如果正常安装后访问ip+端口出现404情况,进入tomcat目录,把原有webapps目录删除,并把webap

  • 在Idea中使用Docker部署SpringBoot项目的详细步骤

    前言 项目需要: 安装Dockeridea中安装docker插件,并配置docker一个SpringBoot项目创建Dockerfile 一.下载.安装.配置Docker下载Docker 下载地址:官网下载 Docker 安装 一直下一步就行 配置路径:Settings–General 勾选 Expose daemon on tcp://localhost:2375 without TLS 设置镜像,提高下载镜像的速度https://xaiqlt1z.mirror.aliyuncs.com 测试

  • Docker部署SpringBoot应用的实现步骤

    目录 前言 Dockerfile 什么是 Dockerfile? Dockerfile语法 打包SpringBoot项目 在本地将SpringBoot应用打包成jar 准备jar包和Dockerfile 编写Dockerfile 使用工具将jar和Dockerfile上传到服务器 构建镜像 查看镜像 创建并运行容器 查看正在运行的镜像 查看日志 前言 部署项目时可能会需要依赖于node.js.Redis.RabbitMQ.MySQL等,这些服务部署时所需要的函数库.依赖项各不相同,甚至会有冲突.

  • Docker部署springboot项目到腾讯云的实现步骤

    目录 服务器的配置 安装MySql 将springboot项目打成jar包 编写Dockfile文件 访问 删除重做(更新)镜像 服务器的配置 服务器配置总结为三个,防火墙,端口,和安全组 1.防火墙 查看防火墙状态 firewall-cmd --state 没有开启则开启防火墙 systemctl start firewalld.service 2.端口 添加对外开放的端口 firewall-cmd --zone=public --add-port=端口号/tcp --permanent fi

  • Jenkins+Docker 一键自动化部署 SpringBoot 项目的详细步骤

    目录 Jenkins+Docker 一键自动化部署 SpringBoot 项目 一.安装docker 1.确保 yum 包更新到最新 2.卸载旧版本(如果安装过旧版本的话) 3.安装需要的软件包 4.设置yum源 5.安装docker 6.启动和开机启动 7.验证安装是否成功 二.安装Jenkins 1.安装Jenkins 2.初始化Jenkins 2.1 解锁Jenkins 2.2 安装插件 2.3 创建管理员用户 三.系统配置 1. 安装需要插件 2. 配置Maven 四.创建任务 1. 新

  • 使用Docker部署 spring-boot maven应用的方法

    本文介绍了使用Docker部署 spring-boot maven应用,分享给大家,具体如下: 部署过程分为以下几个步骤: 创建一个简单的spring-boot应用 打包运行应用 容器化应用 在pom文件中添加docker支持 创建docker镜像 运行docker容器 查看正在运行的容器 启动/关闭/重启/删除docker容器 1. 创建一个简单的spring-boot应用 在IntelliJ IDEA中File->New->Project: 然后点Next->Finish. 2. 打

  • Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码

    最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4.项目准备 5.编写 Dockerfile 6.发布项目 7.测试服务 环境准备 系统:Ubuntu 17.04 x64 Docker 17.12.0-ce IP:45.32.31.101 一.安装 Docker CE 国内不建议使用:"脚本进行安装",会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式 1.常规安装方式 Ubuntu 17.04 x64 安装

  • Docker部署Spring-boot项目的示例代码

    一.基础Spring-boot快速启动 1.1 快速启动 pom.xml加入如下依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> </parent> <properties&g

  • 使用docker部署dubbo项目的方法步骤

    1.首先用springboot构建一个简单的dubbo测试程序,并引入相关依赖 编写公共接口api 编写provider实现UserSvice的方法,并暴露服务 编写provider的配置文件 编写Consumer 通过调用provider的服务获取user信息并返回 consumer的配置文件 测试程序已完成 在本地启动,看看程序是否能正常调用服务 启动zookeeper 先启动provider端再启动consumer端 通过dubbo的控制台看到我们的服务已经注册成功 通过访问本地,看到我们

随机推荐