Docker部署Spring Boot应用


title: Docker部署Spring Boot应用
date: 2018-5-9 19:27:56
tags: [Docker,Spring Boot]
categories: [Docker]

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 使用Docker我们可以很方便的部署Spring Boot应用。

首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署

Spring Boot 项目

在pom.xml文件中添加web和测试依赖

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

创建一个Controller来验证是否部署成功

@RestController
public class DockerController {
	
    @RequestMapping("/")
    public String index() {
        return "Docker && Spring Boot";
    }
}

Spring Boot 项目添加 Docker 支持

在pom.xml中添加Docker镜像名称及插件

<properties>
	<docker.image.prefix>springboot</docker.image.prefix>
</properties>

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
		<!-- Docker maven plugin -->
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>1.0.0</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>
		<!-- Docker maven plugin -->
	</plugins>
</build>

在src/main/docker 下创建DockerFile文件

#第一行必须指令基于的基础镜像
FROM openjdk:8-jdk-alpine
#创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
VOLUME /tmp
#该命令将复制指定的 到容器中的,并且重命名
ADD spring-boot-docker-1.0.jar app.jar
#配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

构建打包环境

以 Centos 7 为例

安装 Docker 环境

安装
yum install docker

启动
service docker start

镜像加速
vi  /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

输入docker version 返回版本信息则安装正常

安装MAVEN

  1. 下载安装文件
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

  2. 解压安装:
    tar -zxvf apache-maven-3.3.9-bin.tar.gz

    mv apache-maven-3.3.9 /usr/local/maven3

修改环境变量, 在/etc/profile最后添加以下几行

MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

执行source /etc/profile使环境变量生效。

输入mvn -version 返回版本信息则安装正常。

使用 Docker 部署 Spring Boot 项目

将项目 拷贝服务器中,进入项目路径下进行打包测试

#打包
mvn package
#启动
java -jar target/spring-boot-docker-1.0.jar

如果打包失败,跳过test打包

mvn package -Dmaven.test.skip=true

看到 Spring Boot 的启动日志后表明环境配置没有问题,接下来我们使用 DockerFile 构建镜像

mvn package docker:build

使用docker images命令查看构建好的镜像:

docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
springboot/spring-boot-docker   latest              99ce9468da74        6 seconds ago       117.5 MB

运行该镜像

docker run -p 8080:8080 -t springboot/spring-boot-docker

使用docker ps查看正在运行的镜像:

然后访问浏览器。http://192.168.x.x:8080/

部署完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Usher_Ou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值