一、项目介绍
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.example.demo.docker</groupId>
<artifactId>docker-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>docker-demo</name>
<parent>
<groupId>com.example.demo</groupId>
<artifactId>springboot-docker</artifactId>
<version>0.0.1-SNAPSHOT</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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<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>
<!-- docker 插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- 指的是镜像构建后,docker 仓库中镜像的名字 -->
<imageName>springboot/${project.artifactId}</imageName>
<!-- 指的是DockerFile 文件在此项目中的路径 -->
<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>
</build>
</project>
3、DockerDemoApplication.java
package com.example.demo.docker;
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
@RestController
public class DockerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(DockerDemoApplication.class, args);
}
/**
* 方法名:
* 功能:
* 描述:
* 创建人:typ
* 创建时间:2018/11/1 13:01
* 修改人:
* 修改描述:
* 修改时间:
*/
@GetMapping("/test")
public String test(){
return "Hello Docker World!";
}
}
3.创建文件 src/main/docker/Dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD docker-demo.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- VOLUME 指定了临时文件目录为/tmp;
- 项目的 jar 文件作为 “app.jar” 添加到容器中;
- ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
二、Docker中部署SpringBoot项目
1、创建文件夹docker,存放Dockerfile和已经打包好的springboot项目jar
2、执行命令构建镜像
docker build -t docker-demo .
- -t :镜像的名字及标签,通常 name:tag 或者 name,这里的镜像名为docker-demo;
- path : . 点代表当前路径下的所有文件。
构建过程:
3、使用命令查看构建好的镜像 docker images
4、启动镜像
docker run -d -p 8081:8081 docker-demo # 启动
docker ps # 查看正在运行的镜像
- -d 指定容器在后台运行;
- -p 8081:8081 用于将容器内的8081端口映射到主机的8081端口,也可以换成其他本机端口。
5、浏览器访问