2019.6.18 使用docker部署springboot项目(一)

以下文章参考自: 

https://blog.youkuaiyun.com/S_gy_Zetrov/article/details/78161154(强推):

https://blog.lqdev.cn/2018/07/27/springboot/chapter-fourteen/

http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html

https://www.runoob.com/docker/docker-tutorial.html

一、介绍

1.什么是docker?

首先,需要了解什么是容器

简单地说,一个容器包含了完整的运行时环境:一个应用、这个应用所需的全部依赖、类库、其他二进制文件、配置文件,它们统一被打入了一个包中。通过将应用平台和其依赖容器化,操作系统发行版本和其他基础环境造成的差异,都被抽象掉了。

 虚拟化和容器有什么不同?

使用虚拟化技术时,可以被分发的文件包是一台虚拟机,它包含了整个操作系统和应用。一台运行着三个虚拟机的物理服务器,需要有一个管理虚拟机软件的中间层,以及运行在这个中间层之上的三个独立操作系统。

懒得写了,参考此文章:

https://baijiahao.baidu.com/s?id=1609932946964681808&wfr=spider&for=pc 

 docker定义

关于Docker,百度百科是这么说的:Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

 2.Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

3.Docker 的优点

  • 1、简化程序:
    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

  • 2、避免选择恐惧症:
    如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

  • 3、节省开支:
    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

二、部署 

前提条件:

1.可以运行jar包的环境
2.机器上已经安装了docker
3.准备部署的springboot的jar包
4.Dockerfile文件

note:

1.java:8 是使用jdk版本
2.dalaoyang_mgr.jar是使用jar包名称
3.ADD dalaoyang_mgr.jar /dalaoyang.jar 拷贝jar到容器
4.ENTRYPOINT 执行jar文件

首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署。

1.Spring Boot 项目添加 Docker 支持

在 pom.xml-properties 中添加 Docker 镜像名称

<properties>
	<docker.image.prefix>springboot</docker.image.prefix>
</properties>

plugins 中添加 Docker 构建插件:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
		<!-- 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 -->
	</plugins>
</build>

在目录src/main/docker下创建 Dockerfile 文件,Dockerfile 文件用来说明如何来构建镜像。

# Dockerfile
# 基于的镜像
FROM openjdk:8-jdk-alpine

VOLUME /opt/tmp

ADD chapter-14-0.0.1-SNAPSHOT.jar app.jar

# -Djava.security.egd=file:/dev/./urandom 可解决tomcat可能启动慢的问题
# 具体可查看:https://www.cnblogs.com/mightyvincent/p/7685310.html
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

# 对外端口
EXPOSE 8080

这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中,简单解释一下:

  • FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
  • VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
  • ADD ,拷贝文件并且重命名
  • ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

这样 Spring Boot 项目添加 Docker 依赖就完成了。

 

构建打包环境

我们需要有一个 Docker 环境来打包 Spring Boot 项目,在 Windows10 搭建 Docker 环境。

win10安装 Docker 环境

https://blog.youkuaiyun.com/qq_31194443/article/details/92789514

其他操作系统安装docker环境

centOS:https://www.runoob.com/docker/centos-docker-install.html

macOS:https://www.runoob.com/docker/macos-docker-install.html

win7\win8:https://www.runoob.com/docker/windows-docker-install.html

 

生成docker镜像

将Dockerfile和jar放在一个文件夹,使用下面命令生成镜像,注意最后的.

docker build -t dalaoyang .

注意:dalaoyang是生成的镜像名称。

更多docker build命令可以查看菜鸟教程

查看一下docker镜像

docker images

如图,可以看到已经有了一个名称为dalaoyang的镜像
这里写图片描述

运行Docker容器

代码如下

docker run -d -p 9000:9000 dalaoyang

解释一下需要注意的地方

1.-d 后台运行
2.-p 9000:9000 将docker容器的9000端口映射到服务器上的9000端口

到这里就配置完成了,在浏览器使用:服务器ip:9000就能访问docker容器内部署的springboot项目了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值