docker 中部署一个springBoot项目

来源:互联网 发布:php上传文件类封装 编辑:程序博客网 时间:2024/06/03 09:27

docker 中部署一个springBoot项目

(1)介绍 springBoot项目

1.项目结构


2.pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.caoxia</groupId><artifactId>docker_spring_boot</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>docker_spring_boot</name><url>http://maven.apache.org</url><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.3.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><!--properties节点中设置docker镜像的前缀“springboot”--><docker.image.prefix>springboot</docker.image.prefix></properties><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!--加入maven插件“docker-maven-plugin”--><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><!--<version>0.2.3</version>--><version>0.4.11</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></plugins><finalName>docker_spring_boot</finalName></build></project>

3.App.java

package com.caoxia;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }    @GetMapping("/")    public String index() {        return "你好,docker";    }}


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

FROM frolvlad/alpine-oraclejdk8:slimVOLUME /tmpADD docker_spring_boot.jar app.jarRUN sh -c 'touch /app.jar'ENV JAVA_OPTS=""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查到


最后,访问本地浏览器:



原创粉丝点击