使用Docker部署SpringBoot项目的实现方法

来源:脚本之家  责任编辑:小易  

确认一下端口映射是否开启。可能因为你的本地端口开着,但是没有映射到Docker容器

Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。

Docker日志发送到Loggly可以有多种途径 我们为您提供了多种灵活的日志传送方法,你可以选择其

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

zookeeper是Dubbo服务的注册中心,provider提供服务后注册在zookeeper上,

一个简单 Spring Boot 项目

Docker的使用 Docker是一个轻量级的虚拟化解决方案,你可以实现秒级的虚拟机启动、非常轻量级

在 pom.xml 中 ,使用 Spring Boot 2.0 相关依赖

初次安装部署好docker后,大多数镜像可以从DockerHub提取,但是大多数人都希望自己可以完全

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent>

谢谢你的邀请;不管男的女的在恋爱中不提钱是好的,只要一提钱就特别伤感情了;你们说是不是?你看你们两就是一个很好的例子,如果不是因为钱的问题,我想你们现在应该处于感情很好的恋爱关系,就是因为钱,搞到大家到现在都不肯退步,不让步,也不管谁对谁错,再终闹到分开为止,都不愿意接受。

添加 web 和测试依赖

旗袍,华丽复古,婀娜多姿,最能体现东方女子的韵味。《花样年华》的张曼玉,《色戒》的汤唯,《倾城之恋》的陈数,大写的惊艳!记忆深刻啊!了解到旗袍的样式很多,此前做了很多功课,我们先简单介绍一下旗袍样式:旗袍样式:?袖式:宽袖、窄袖、长袖、中袖、无袖?开襟:如意襟、斜襟、双襟、琵琶襟旗袍上的襟是出去袖子,前面的那一片。开襟是中式上衣、袍子的一种样式,服装可以从中间或某个地方分开的,就叫开襟。?领型:高领、低领、无领?开叉:高开叉、低开衩?款式:长旗袍、短旗袍、夹旗袍、单旗袍经典造型:关于惊艳了我的旗袍样式,每一款都有其独特的韵味,咱们各选几个代表说说吧!1、高领无袖旗袍:《花样年华》张曼玉的23套

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

这款车刚上市不久,价格优惠应该不大。1.6L车型指导价为9.98万~12.78万区间,变速箱包括5挡手动和CVT。1.4T车型指导价为13.18~15.98万区间,变速箱包括6挡手动和6挡手自一体。其中顶配车型:1.4T都市尊享型还是全时四驱的,价格15.98万。

创建一个 DockerController,在其中有一个index()方法,访问时返回:Hello Docker!

从理论上说,在三观相符,性格合拍,臭味相投的前提下,同居是可以在一定程度上降低生活成本的。相信这一点,大家在租房的时候会有很大的感受,合租和独居是完全不同的体验。只是但凡有一定租房经验的人都知道,想要遇上一个适合的室友,简直难如登天。于是很多年轻人会选择和伴侣合租,两人同睡一张床,没有恼人的室友,卧室都可以省去一个,降低生活成本,还可以天天见面,真是百利无一害。现在社会的思想与日俱进,同居已经不是什么新鲜事,甚至还多了一个美称:试婚。在结婚前先同居那么一段时间,检测双方是否足够完全融入对方的生活,考验彼此是否称职做自己的终身伴侣,如有不适趁早了断,降低了离婚的风险。这一切听起来水到渠成,但凡事

@RestController public class DockerController { @RequestMapping("/") public String index() { return "Hello Docker!"; } }

启动类

@SpringBootApplication public class DockerApplication { public static void main(String[] args) { SpringApplication.run(DockerApplication.class, args); } }

添加完毕后启动项目,启动成功后浏览器访问:http://localhost:8080/,页面返回:Hello Docker!,说明 Spring Boot 项目配置正常。

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 文件用来说明如何来构建镜像。

FROM openjdk:8-jdk-alpine VOLUME /tmp ADD spring-boot-docker-1.0.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

这个 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 项目,在 Windows 搭建 Docker 环境很麻烦,因此我这里以 Centos 7 为例。

安装 Docker 环境

安装

yum install docker

安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

service docker start chkconfig docker on #LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下: systemctl start docker.service systemctl enable docker.service

使用Docker 中国加速器

vi /etc/docker/daemon.json #添加后: { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }

重新启动docker

systemctl restart docker

输入docker version 返回版本信息则安装正常。

安装JDK

yum -y install java-1.8.0-openjdk*

配置环境变量 打开 vim /etc/profile添加一下内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 export PATH=$PATH:$JAVA_HOME/bin

修改完成之后,使其生效

source /etc/profile

输入java -version 返回版本信息则安装正常。

安装MAVEN

下载:http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz

## 解压 tar vxf apache-maven-3.5.2-bin.tar.gz ## 移动 mv apache-maven-3.5.2 /usr/local/maven3

修改环境变量, 在/etc/profile中添加以下几行

MAVEN_HOME=/usr/local/maven3 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin

记得执行source /etc/profile使环境变量生效。

输入mvn -version 返回版本信息则安装正常。

这样整个构建环境就配置完成了。

使用 Docker 部署 Spring Boot 项目

将项目 spring-boot-docker 拷贝服务器中,进入项目路径下进行打包测试。

#打包 mvn package #启动 java -jar target/spring-boot-docker-1.0.jar

看到 Spring Boot 的启动日志后表明环境配置没有问题,接下来我们使用 DockerFile 构建镜像。

mvn package docker:build

第一次构建可能有点慢,当看到以下内容的时候表明构建成功:

... Step 1 : FROM openjdk:8-jdk-alpine ---> 224765a6bdbe Step 2 : VOLUME /tmp ---> Using cache ---> b4e86cc8654e Step 3 : ADD spring-boot-docker-1.0.jar app.jar ---> a20fe75963ab Removing intermediate container 593ee5e1ea51 Step 4 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar ---> Running in 85d558a10cd4 ---> 7102f08b5e95 Removing intermediate container 85d558a10cd4 Successfully built 7102f08b5e95 [INFO] Built springboot/spring-boot-docker [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 54.346 s [INFO] Finished at: 2018-03-13T16:20:15+08:00 [INFO] Final Memory: 42M/182M [INFO] ------------------------------------------------------------------------

使用docker images命令查看构建好的镜像:

docker images REPOSITORY TAG IMAGE ID CREATED SIZE springboot/spring-boot-docker latest 99ce9468da74 6 seconds ago 117.5 MB

springboot/spring-boot-docker 就是我们构建好的镜像,下一步就是运行该镜像

docker run -p 8080:8080 -t springboot/spring-boot-docker

启动完成之后我们使用docker ps查看正在运行的镜像:

docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 049570da86a9 springboot/spring-boot-docker "java -Djava.security" 30 seconds ago Up 27 seconds 0.0.0.0:8080->8080/tcp determined_mahavira

可以看到我们构建的容器正在在运行,访问浏览器:http://192.168.0.x:8080/,返回

Hello Docker!

说明使用 Docker 部署 Spring Boot 项目成功!

示例代码 :https://github.com/ityouknow/spring-boot-examples

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何在docker中部署springboot的web应用

第一步:搭建springboot的web应用,可在CMD命令行中通过mvn install命令将应用打成jar包:如demo-0.0.1-SNAPSHOT.jar

第二步:将jar包copy到centos文件系统中,指定目录示例为:/usr/local/demo-0.0.1-SNAPSHOT.jar

第三步:构建docker镜像:此处以docker build方式构建

怎么把spring boot打包成镜像部署到docker

当想让一个容器做两件事情,或者使一个Docker镜像包含来自两个不同镜像的依赖库时,就需要知道每个镜像的Dockerfile。本文介绍了如何通过docker history命令来对Docker镜像进行反向工程,得到它们的Dockerfile,并组织到一个Dockerfile里然后build,从而实现想做的事情。

常言道,“不要重复发明轮子!”

在使用Docker时,构建自己的镜像之前,最好在Docker Hub寻找一些可以直接使用的镜像做练习。把软件架构分布到一系列容器中,每一个容器只做一件事情,这样的效果非常好。构建分布式应用的最好的基石是使用来自Docker Hub的官方镜像,因为可以信任它们的质量。

在某些情况下,可能想让一个容器做两件不同的事情。而在另外一些情况下,可能想让一个Docker镜像包含来自两个不同镜像的依赖库。如果有每个镜像的Dockerfile,这是非常简单的。将它们组织到一个Dockerfile里然后build就行。

然而,大多数时间都在使用Docker Hub上准备好的镜像,不会有它们的源Dockerfile。我花时间找一个可以合并(或flatten)两个不同Docker镜像的工具,当然没有它们的Dockerfile。也就是说在找一个能做下面这件事的东西:

docker部署springboot是不是服务器要maven

服务器上是需要配置Maven环境,因为在部署项目时可能会下载一些依赖包。

怎么利用docker搭建一个预发布环境

1、首先你要确定使用什么基础镜像:因为你的项目是JAVA项目,在网页链接hub仓库寻找自己需要的基础镜像,推荐使用JAVA 8基础镜像

2、搞定服务运行的相关文件,将服务需要运行的文件整理并写入dockerfile

3、编写dockerfile文件,选择基础镜像和挂载服务运行文件,运行方式等

4、运行dockerfile打包的镜像容器就可以了

springcloud 微服务 在linux上用docker部署 服务调用第三方的动态库(.so包)

Spring Cloud项目必须基于Spring Boot项目来开发,所以这里讲解Spring Boot项目的部署,Spring Cloud项目也是同理。博主使用的是Dockerfile的形式来部署。废话不多说,先张贴代码:

FROM frolvlad/alpine-oraclejdk8

VOLUME /usr/test

ADD test.jar app.jar

EXPOSE 8001

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  • 本文相关:
  • docker部署springboot项目实例解析
  • 利用dockerfile部署springboot项目的方法
  • java通过idea远程一键部署springboot到docker详解
  • springboot整合docker部署实现两种构建docker镜像方式
  • mac下部署springboot项目到docker中(demo)
  • docker 部署 springboot 项目整合 redis 镜像做访问计数示例代码
  • 详解springboot项目docker部署实践
  • docker学习之基于dockerfile搭建java tomcat运行环境的方法
  • docker如何多步构建生成dubbo-admin镜像详解
  • docker学习笔记之docker入门
  • 详解ubuntu16.04安装docker、nvidia-docker的教程
  • docker启用tls实现安全配置的步骤
  • 详解docker学习笔记之搭建一个java tomcat运行环境
  • 如何配置docker官方源并用yum安装docker
  • docker swarm 集群故障与异常详解
  • alpine镜像中telnet转移至busybox-extras
  • 详解centos7 下建立 docker 桥接网络
  • 如何在docker中部署springboot的web应用
  • 怎么把spring boot打包成镜像部署到docker
  • docker部署springboot是不是服务器要maven
  • 怎么利用docker搭建一个预发布环境
  • springcloud 微服务 在linux上用docker部署 服务调用第三方的动态库(.so包)
  • docker 启动springboot不能上传文件
  • docker spring boot 日志放在哪
  • springboot docker 与dubbo zookeeper 的区别在哪
  • docker化web项目不能指定server.address
  • 如何把java 应用 制作成docker镜像
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved