前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >框架 | SpringBoot项目发布到自动化容器Docker步骤

框架 | SpringBoot项目发布到自动化容器Docker步骤

作者头像
码神联盟
发布2018-06-04 17:12:57
发布2018-06-04 17:12:57
2.2K00
代码可运行
举报
文章被收录于专栏:码神联盟码神联盟
运行总次数:0
代码可运行

如何发布Sping Boot项目?

新建好SpringBoot项目之后,SIT测试如果没问题,则下一步肯定要进行UAT测试。

那么如何将SpringBoot项目进行发布部署,这和我们之前的普通web项目不太一样,之前的项目直接部署到tomcat的webapps中,然后启动tomcat即可访问。

但是SpringBoot项目内嵌tomcat,这如何发布部署访问呢?

目前比较常用的方式有三种:发布JAR包、发布WAR包、部署到自动化容器中,以下具体讲解发布部署过程。

1

技术选型

JDK1.7、MYSQL57、Spring Boot、Logback、Mybatis、mybatis映射xml、jsp、关闭默认模板引擎、DB连接池、Docker

2

开发工具

Myeclipse、Maven、Linux、Tomcat7

方式一:JAR包--推荐

点击这里《框架 | SpringBoot项目创建和发布部署步骤》

方式二:WAR包--看着办

点击这里《框架 | SpringBoot项目发布部署外部tomcat服务器步骤》

方式三:自动化容器--强烈推荐

Docker概述:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。更重要的是容器性能开销极低。Docker image 是用于运行容器化进程的方案,在本文中,我们将构建一个简单的 Spring Boot 应用程序。

Docker应用场景:

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

SpringBoot项目部署Docker过程:

Docker安装(Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上),采用yum安装方式:

①:通过 uname -r 命令查看你当前的内核版本

②:执行docker安装命令

③:启动docker后台服务

④:测试运行hello word

创建SB项目:

①:修改pom.xml,增加docker的插件

将SB项目部署到docker中:

①:首先保证在本地是可以访问没问题

②:创建一个source folder--src/main/docker

③:创建文件Dockerfile

④:导出jar包

⑤:在centos的/opt下新建docker文件夹

⑥:将jar包和Dockerfile 文件上传到docker文件夹目录下

⑦:在docker文件夹下执行命令:docker build -t docker .

-t代表要构建的镜像的tag,.代表当前目录,也就是Dockerfile所在的目录。

⑧:查看docker镜像进程docker images

⑨:启动镜像

⑩:本地浏览器访问

核心配置和操作过程如下:

核心代码:

代码语言:javascript
代码运行次数:0
运行
复制
pom.xml
<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.xdl</groupId>
 <artifactId>SpringBootDemo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.9.RELEASE</version>
 <relativePath />
 </parent>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 <docker.image.prefix>springboot</docker.image.prefix>
 </properties>
 <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>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>
 </dependencies>
 <build>
 <plugins>
 <plugin>
 <artifactId>maven-compiler-plugin</artifactId>
 <configuration>
 <source>1.8</source>
 <target>1.8</target>
 </configuration>
 </plugin>
  <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</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>
 </plugins>
 </build>
</project>
MainServerController.java
@Controller
@SpringBootApplication
public class MainServerController {
 @ResponseBody
 @RequestMapping(value = "/")
 String home() {
 return "Hello Docker World";
 }
 public static void main(String[] args) {
 SpringApplication.run(MainServerController.class, "--server.port=8081");
 }
}
Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD SpringBootDemo-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

部署过程详解:

Docker安装,采用yum安装方式:

①:通过 uname -r 命令查看你当前的内核版本

②:执行docker安装命令

③:启动docker后台服务

④:测试运行hello word

创建SB项目:

①:修改pom.xml,增加docker的插件

将SB项目部署到docker中:

①:首先保证在本地是可以访问没问题

②:创建一个source folder--src/main/docker

③:创建文件Dockerfile

④:导出jar包

项目-->右键-->maven install

⑤:在centos的/opt下新建docker文件夹

⑥:将jar包和Dockerfile 文件上传到docker文件夹目录下

⑦:在docker文件夹下执行命令:docker build -t docker . (注意有个点)

-t代表要构建的镜像的tag,.代表当前目录,也就是Dockerfile所在的目录。

执行过程中,报错如下:

原因:出现这个问题原因为国内网络问题,无法连接到 docker hub。 好在国内已经有 daocloud,docker指定该源即可

解决:执行命令docker pull registry

解决完毕之后,继续执行docker build -t docker . 命令(注意有个点)

⑧:查看docker镜像进程:docker images

⑨:启动镜像 docker run -d -p 8081:8081 docker

⑩:本地浏览器访问

访问之前需要开启端口访问:

/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码神联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档