使用docker构建第一个spring boot项目
Posted kevinmanlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用docker构建第一个spring boot项目相关的知识,希望对你有一定的参考价值。
在看了一些简单的docker命令之后 打算自己尝试整合一下docker+spring boot项目
本文是自己使用docker+spring boot 发布一个项目
1.docker介绍 docke是提供简单易用的容器接口
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
2.docker centos 安装
yum install docker-io –y
systemctl start docker
安装完成后 测试 docker info 或者docker version
3.镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,国内很多云服务商都提供了加速器服务
https://dockerhub.azk8s.cn、https://reg-mirror.qiniu.com、http://hub-mirror.c.163.com等
然后在 /etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件)
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
之后重新启动服务。
4.其他软件安装
本文是基于centos下操作的,还需要在自己的服务器上装好 meven和java软件。
5.开始构建项目
直接新建一个spring boot 项目
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
然后新建一个controller
@RestController public class Ctrldocker @RequestMapping("/docker") public String test() return "hello this is docker!";
spring boot 项目新建好之后,在本地测试一下,启动服务访问127.0.0.1:8080/docker 得到返回参数 hello this is docker! 说明spring boot 项目没有问题。下面开始配置docker
6.配置spring boot中docker的配置
在pom文件中的增加 Docker 构建插件
<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>
在pom文件中的properties中增加docker镜像的名字
<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>
在spring boot项目中增加一个docker文件夹,并在文件夹中新增一个Dockerfile文件
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD demo-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
文件的意思很简单
FROM ,是指本项目 继承openjdk:8-jdk-alpine镜像,如果没有没有则会在dockerhub上拉取过来。
VOLUME ,VOLUME 指向了一个/tmp
的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp
作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker
目录下创建一个临时文件并把它链接到容器中的/tmp
目录
ADD ,拷贝文件并且重命名
ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd
的系统属性指向/dev/urandom
作为 ENTRYPOINT
到此位置docker + spring boot 项目构建基本完成 最后开始测试打包。
7.测试发布
将我们的项目发送到我们的服务器中,进入项目路径
#打包 mvn package #启动 java -jar target/demo-0.0.1-SNAPSHOT.jar
启动成功则说明我们的正常打包流程是没有问题的,下面我们开始构建一个镜像
mvn package docker:build
看懂BUILD SUCCESS 后说明镜像就构建好了
我们可以使用docker images
REPOSITORY TAG IMAGE ID CREATED SIZE springboot/demo latest 457d124b2fdb 4 days ago 122 MB
这里可以看到我们构建成功的镜像
docker run -p 8080:8080 -t springboot/demo
运行我们的镜像,运行成功后 我们可以使用访问服务器的地址 http://xxx.xx.xx:8080/docker 查看返回信息
以上是关于使用docker构建第一个spring boot项目的主要内容,如果未能解决你的问题,请参考以下文章
使用 Docker 构建部署运行Spring Boot应用 《Spring Boot 2.0 极简教程》
如何将基于 Spring Boot 构建的依赖项使用到典型的 Spring 应用程序中?