• docker 中部署一个springBoot项目


    docker 中部署一个springBoot项目

    (1)介绍 springBoot项目

    1.项目结构

    2.pom.xml

    [java] view plain copy
     
    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

    [java] view plain copy
     
    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

    [java] view plain copy
     
    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查到
     
    最后,访问本地浏览器:
     
  • 相关阅读:
    C#自定义控件之数字文本框
    C# 校验字符串是否为IP格式
    C# winform 解决加载闪烁,背景透明等问题
    SQL Server 数据类型
    C#自定义控件之下拉列表框
    C#将 byte[ ] 转换为对应的struct
    AFNetworking图片上传
    xfs删除oracle数据文件恢复
    揭秘String类型背后的故事——带你领略汇编语言魅力
    [批处理]截取for命令里面的变量%%i
  • 原文地址:https://www.cnblogs.com/wangsongbai/p/9203261.html
Copyright © 2020-2023  润新知