Spring boot项目部署到Docker环境
2018-12-31 23:47
1561 查看
Spring boot项目部署到Docker环境
环境列表
JDK | 1.8 |
---|---|
编译器 | IDEA |
docker环境操作系统 | CentOS7.6 |
spring boot 版本 | 2.1.1.RELEASE |
Docker 版本 |
创建spring boot应用
在项目入口类添加一个测试接口,代码如下:
@SpringBootApplication @RestController public class DemoApplication { @RequestMapping("/hello") public String home() { return "Hello Docker World"; } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
我创建了一个名为 demo的项目
Spring 项目添加Docker支持
在
pom.xml-properties中添加 Docker 镜像名称前缀
<properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.RC2</spring-cloud.version> <docker.image.prefix>viki</docker.image.prefix> </properties>
在
pom.xml-plugins中添加 docker 插件
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.9</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin>
Docker有一个简单的Dockerfile文件格式,用于指定图像的“layer”。那么让我们继续在Spring Boot项目中创建一个
Dockerfile:
FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ADD ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
注: app.jar 可改为你具体的应用jar包名称
这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中。
- FROM :指定需要使用哪个基础docker镜像(镜像含有JDK环境),需要先下载
- VOLUME:因为这是Spring Boot应用程序默认为Tomcat创建工作目录的地方。效果是在主机“/ var / lib / docker”下创建一个临时文件,并将其链接到“/ tmp”下的容器
- ARG :定义了用户可以在编译时或者运行时传递的变量,JAR_FILE是项目打包后的jar名称
- ADD:拷贝文件并重新命名
- ENTRYPOINT:为了缩短 Tomcat 的启动时间,添加
java.security.egd
的系统属性指向/dev/urandom
作为
Docker打包环境配置
Docker安装
这里是在CentOS7.6上安装docker环境
请参考我的另一篇博文 CentOS7.6安装Docker,注意,需要使用Docker 中国加速器,否则下载镜像时,会超时。
JDK安装
yum install java java-devel
注:需要安转java-devel,否则Maven会报找不到JRE的错误,虽然执行java -version没有异常。
Maven安装
请参考另一篇博文Linux(CentOS7.x)下安装Maven
在Docker环境部署Spring boot项目
将demo项目上传到服务器,进入项目进行打包测试
mvn clean package
启动测试项目是否正常工作
java -jar target/demo-0.1.ja
看到成功日志说明环境没有问题,接下来我们使用 DockerFile 构建镜像
使用Dockerfile构建镜像
mvn clean package dockerfile:build
构建成功后验证,生成了期望的viki/demo的镜像
[root@MiWiFi-R3-srv demo]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE viki/demo latest 07a1ed182817 9 seconds ago 119MB
使用镜像
[root@MiWiFi-R3-srv demo]# docker run -p 8080:8080 -t viki/demo . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.1.RELEASE)
看到容器中的应用成功启动。
在浏览器中访问 http://宿主机IP:8080/hello
看到期望的返回结果:Hello Docker World
构建成功!
碰到的问题
- docker:build 时报如下错误:
[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/root/.m2/repository), alimaven (http://maven.aliyun.com/nexus/content/groups/public/)] -> [Help 1]
解决方法是:解决办法是修改 maven 的配置文件 settings.xml,在pluginGroups 处增加如下内容,
<pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups>
-
Must specify baseImage if dockerDirectory
应该使用
mvn clean package dockerfile:build
,而不是mvn clean package docker:build
参考文档
阅读更多相关文章推荐
- Spring Boot + Java爬虫 + 部署到Linux (一、环境配置,新建一个Spring Boot项目)
- spring-boot项目在外部tomcat环境下部署
- Docker部署Spring-boot项目的示例代码
- Mac下部署springBoot项目到Docker中(demo)
- Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码
- springboot项目配置多环境打包部署遇到的问题总结
- Docker 部署 SpringBoot 项目
- Spring boot项目在docker下的部署,发布
- spring-boot项目在外部tomcat环境下部署
- Docker部署springboot项目实例
- spring-boot项目在外部tomcat环境下部署
- Docker部署Spring Boot项目 笔记
- spring-boot项目在外部tomcat环境下部署
- Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
- spring-boot dubbo项目使用docker方式部署
- mac和linux下使用Docker,部署SpringBoot项目到docker
- 将springBoot项目部署到docker入门实例
- spring-boot项目在外部tomcat环境下部署
- 1 springboot项目集成使用disconf,基于docker环境