docker 中部署一个springBoot项目

转载 2018年04月17日 21:58:41

docker 中部署一个springBoot项目

(1)介绍 springBoot项目

1.项目结构


2.pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.     <modelVersion>4.0.0</modelVersion>  
  5.   
  6.     <groupId>com.caoxia</groupId>  
  7.     <artifactId>docker_spring_boot</artifactId>  
  8.     <version>0.0.1-SNAPSHOT</version>  
  9.     <packaging>jar</packaging>  
  10.   
  11.     <name>docker_spring_boot</name>  
  12.     <url>http://maven.apache.org</url>  
  13.   
  14.     <parent>  
  15.         <groupId>org.springframework.boot</groupId>  
  16.         <artifactId>spring-boot-starter-parent</artifactId>  
  17.         <version>1.4.3.RELEASE</version>  
  18.     </parent>  
  19.   
  20.     <properties>  
  21.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  22.         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>  
  23.         <java.version>1.8</java.version>  
  24.           
  25.         <!--properties节点中设置docker镜像的前缀“springboot”-->  
  26.           
  27.         <docker.image.prefix>springboot</docker.image.prefix>  
  28.     </properties>  
  29.   
  30.     <dependencies>  
  31.         <dependency>  
  32.             <groupId>org.springframework.boot</groupId>  
  33.             <artifactId>spring-boot-starter-web</artifactId>  
  34.         </dependency>  
  35.   
  36.         <dependency>  
  37.             <groupId>org.springframework.boot</groupId>  
  38.             <artifactId>spring-boot-starter-test</artifactId>  
  39.             <scope>test</scope>  
  40.         </dependency>  
  41.     </dependencies>  
  42.   
  43.     <build>  
  44.         <plugins>  
  45.             <plugin>  
  46.                 <groupId>org.springframework.boot</groupId>  
  47.                 <artifactId>spring-boot-maven-plugin</artifactId>  
  48.             </plugin>  
  49.               
  50.             <!--加入maven插件“docker-maven-plugin”-->  
  51.               
  52.             <plugin>  
  53.                 <groupId>com.spotify</groupId>  
  54.                 <artifactId>docker-maven-plugin</artifactId>  
  55.                 <!--<version>0.2.3</version>-->  
  56.                 <version>0.4.11</version>  
  57.                 <configuration>  
  58.                     <imageName>${docker.image.prefix}/${project.artifactId}</imageName>  
  59.                     <dockerDirectory>src/main/docker</dockerDirectory>  
  60.                     <resources>  
  61.                         <resource>  
  62.                             <targetPath>/</targetPath>  
  63.                             <directory>${project.build.directory}</directory>  
  64.                             <include>${project.build.finalName}.jar</include>  
  65.                         </resource>  
  66.                     </resources>  
  67.                 </configuration>  
  68.             </plugin>  
  69.         </plugins>  
  70.         <finalName>docker_spring_boot</finalName>  
  71.     </build>  
  72.   
  73.   
  74. </project>  

3.App.java

  1. package com.caoxia;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.web.bind.annotation.GetMapping;  
  6. import org.springframework.web.bind.annotation.RestController;  
  7.   
  8.   
  9. @SpringBootApplication  
  10. @RestController  
  11. public class App {  
  12.     public static void main(String[] args) {  
  13.         SpringApplication.run(App.class, args);  
  14.     }  
  15.   
  16.     @GetMapping("/")  
  17.     public String index() {  
  18.         return "你好,docker";  
  19.     }  
  20. }  


3.创建文件 src/main/docker/Dockerfile

  1. FROM frolvlad/alpine-oraclejdk8:slim  
  2. VOLUME /tmp  
  3. ADD docker_spring_boot.jar app.jar  
  4. RUN sh -c 'touch /app.jar'  
  5. ENV JAVA_OPTS=""  
  6. ENTRYPOINT [ "sh""-c""java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]  

解释下这个配置文件:

  • VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

  • 项目的 jar 文件作为 “app.jar” 添加到容器的

  • ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source

解释下这个配置文件:

  • VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  • 项目的 jar 文件作为 “app.jar” 添加到容器的
  • ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source

(2)在docker 开始部署springBoot项目

1.在centos7 ~ 创建一个文件夹docker 里面放置 上面的Dockerfile 和 springBoot 打包的项目docker_spring_boot.jar


2.


在该docker文件下 指令:docker build -t docker .

执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。


-t代表要构建的镜像的tag,.代表当前目录,也就是Dockerfile所在的目录。

然后就可以看到在下载各种依赖的maven、各种jar,构建完毕后,启动项目。



在该docker文件下使用 指令:docker run -d -p 8080:8080 docker运行该springBoot项目,可以看到构建完毕的景象docker了

访问ip地址:通过ifconfig查到


最后,访问本地浏览器:



Springboot项目云部署 ---- 基于Docker的部署

在刚学习springboot的时候就了解到项目可以通过打包为jar或者war的格式放到服务器上通过命令直接运行,让部署的过程变得十分美丽。随着主流的云计算发展,应用平台都支持发布docker镜像,所以...
  • LEoe_
  • LEoe_
  • 2017-09-11 17:37:47
  • 2032

Docker部署SpringBoot项目

前提是已经拥有一个docker环境和一个springboot打成的jar包,搭建docker环境可参考上一篇博文ECS上搭建Docker(CentOS7) 1.创建Dockerfile 创...
  • runner1920
  • runner1920
  • 2018-01-11 16:14:33
  • 803

在Docker中部署Springboot应用

Docker这项容器技术已经是十分的火热了,读者要是不了解docker的话可以吧docker先理解为虚拟机。 我们的Springboot最终是要部署在Linux上的,docker作为Linux轻量级...
  • u013803262
  • u013803262
  • 2017-04-14 20:27:16
  • 2088

Docker部署springboot项目

  • 2017年11月08日 17:19
  • 410KB
  • 下载

mac和linux下使用Docker,部署SpringBoot项目到docker

主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等。我用的电脑是mac,本...
  • tianyaleixiaowu
  • tianyaleixiaowu
  • 2017-07-14 15:38:35
  • 3742

Docker部署springboot项目实例

一. 背景快到2018了,一年过得如火如荼,今年因为K8S的原因,Docker很是红火、 一个简单的Docker部署Springboot项目实例供大家参考、 二. 实例步骤: 1. 创建镜像 ...
  • yy756127197
  • yy756127197
  • 2017-12-26 10:34:55
  • 638

Docker---(5)Docker 部署SpringBoot web项目

SpringBoot项目发布到服务器,是一件很简单的事情,但是发布到服务器上docker启动的tomcat容器中,有一些坑,需要注意。 下面完整的介绍一下:将SpringBoot web项目发布...
  • weixin_39800144
  • weixin_39800144
  • 2018-01-31 11:27:07
  • 710

Docker入门之构建Springboot项目发布在镜像环境

在之前,简单的讲了一下docker环境的搭建,这里就说一下docker的项目部署,如springboot项目如何运行在docker环境中这里其实主要就是在原有下载镜像的基础上进行重新构建。1:编写Do...
  • MyCodeDream
  • MyCodeDream
  • 2017-01-23 13:55:14
  • 1613

理解docker部署springboot-容器内存优化的反思(五)

写这篇博客的目的可能反思多一些,前些日子一直想做docker内存的优化,没有做成,一直困在这地方。经过大致这样,我把jar和jdk做成一个镜像之后,一个镜像占用内存大概181.8M,我虚机是2G的内存...
  • maoyeqiu
  • maoyeqiu
  • 2017-12-18 12:46:39
  • 860

docker部署pinpoint,监控docker中的Springboot项目

pinpoint是一个开源的java监控项目,也是分布式监控项目中比较知名的。 网上有比较多的pinpoint部署指南,但都是基于主机部署的,这一篇主要是讲将pinpoint部署到docker中,并...
  • tianyaleixiaowu
  • tianyaleixiaowu
  • 2017-12-06 10:14:35
  • 1195
收藏助手
不良信息举报
您举报文章:docker 中部署一个springBoot项目
举报原因:
原因补充:

(最多只允许输入30个字)