028-86261949

当前位置:首页 > 学科资讯 > 用Docker部署SpringBoot应用程序

用Docker部署SpringBoot应用程序

2020/03/23 15:09 分类: 学科资讯 浏览:2

Docker是一个用于创建容器的流行平台--一组标准化的软件单元,它们在单个包中组装代码、运行时、依赖项、设置和初始化,您可以从一个计算环境可靠地运行到另一个包。将应用程序部署为Docker容器可以帮助您在多个环境(即dev、QA、暂存、生产)中顺利地移动应用程序。

本教程向您展示了如何利用Docker部署SpringBoot应用程序。

你需要的是:

  • Java 8+:用SDKMAN或直接来自AdoptOpenJDK
  • Docker:我推荐Docker Desktop
  • 免费的Okta developer account*稍后提供更多信息

创建一个SpringBoot应用程序

你会用Docker的帮助下生成SpringBoot项目HTTPie,一个简单的命令行HTTP客户机。

如果不想使用命令行,可以直接使用SpringInitializr网站。

从命令行中只需输入:

http https://start.spring.io/starter.zip \
2
 dependencies==web,okta \
3
 groupId==com.okta.spring-docker.demo \
4
 packageName==com.okta.spring-docker.demo \
5
 --download

 

然后解压缩下载的文件。

1
unzip demo.zip -d spring-boot-docker
2
cd spring-boot-docker

接下来,通过创建文件添加一个web控制器src/main/java/com/okta/springdocker/demo/WebController.java:

 

package com.okta.springdocker.demo;
2

 
3
import org.springframework.web.bind.annotation.RequestMapping;
4
import org.springframework.web.bind.annotation.ResponseBody;
5
import org.springframework.web.bind.annotation.RestController;
6

 
7
@RestController
8
public class WebController {
9

 
10
    @RequestMapping("/")
11
    public String home() {
12
        return "Welcome!";
13
    }
14
}

您还需要配置此项目的安全设置。目前,您希望允许所有的请求,所以更新您的DemoApplication.java存档如下:

package com.okta.springdocker.demo;
2

 
3
import org.springframework.boot.SpringApplication;
4
import org.springframework.boot.autoconfigure.SpringBootApplication;
5
import org.springframework.context.annotation.Configuration;
6
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
7
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
8

 
9
@SpringBootApplication
10
public class DemoApplication {
11

 
12
    public static void main(String[] args) {
13
        SpringApplication.run(DemoApplication.class, args);
14
    }
15

 
16
    @Configuration
17
    static class OktaOAuth2WebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
18

 
19
        @Override
20
        protected void configure(HttpSecurity http) throws Exception {
21
            http.authorizeRequests().anyRequest().permitAll();
22
        }
23
    }
24
}

您可以通过以下方式编译和运行您的应用程序:

 

./mvnw package
2
java -jar target/demo-0.0.1-SNAPSHOT.jar

 

将SpringBootApp作为一个Docker容器运行

要将应用程序作为Docker容器运行,第一步就是安装docker.

安装之后,是时候构建您的容器了。为此,Docker使用一个描述如何组装容器的文件,称为Dockerfile。这个Dockerfile由在容器中执行的一步一步的指令组成。

注:向伸出援助之手Dockerfile reference有关可以使用的所有命令的说明。

对于SpringBoot应用程序,您将使用一个简单的Dockerfile档案:

现在,您可以在命令行上构建容器。在替换okta:spring_boot_docker带着标签根据您的喜好,它将用作引用您正在构建的容器的名称:

docker build . -t okta:spring_boot_docker

如果一切顺利,您现在可以运行您的Dockerizedapp(使用相同的标签如你之前所用):

docker run --publish=8080:8080 okta:spring_boot_docker

要阻止集装箱,按下Ctrl-C。验证容器没有运行,执行:

docker ps

这将列出在您的机器上运行的所有容器。如果SpringBoot应用程序仍在运行,则可以使用(使用集装箱ID印成docker ps):

 

docker kill <CONTAINER_ID>

 

当您的JAR文件在构建时被复制到容器中时,每次您想要使用新版本的应用程序时,都需要重新构建容器。因此,周期是:

  1. 更改您的代码

  2. 构建应用程序./mvnw package

  3. 构建容器docker build . -t okta:spring_boot_docker

  4. 运行容器docker run --publish=8080:8080 okta:spring_boot_docker

  5. 停止集装箱

  6. 环路

现在您已经了解了使用Docker容器运行应用程序的基本知识!接下来,您可以将已构建的容器发布到Docker注册中心(如DockerHub),这样其他人就可以获取容器,它就可以运行了。

 

 

#标签:Docker,SpringBoot,Java