Docker中部署SpringBoot项目

版权声明: https://blog.csdn.net/typ1805/article/details/84106210

一、项目介绍

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、浏览器访问

猜你喜欢

转载自blog.csdn.net/typ1805/article/details/84106210