docker 中部署一个springBoot项目

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查到


最后,访问本地浏览器:



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页