用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 \
dependencies==web,okta \
groupId==com.okta.spring-docker.demo \
packageName==com.okta.spring-docker.demo \
--download
然后解压缩下载的文件。
unzip demo.zip -d spring-boot-docker
cd spring-boot-docker
接下来,通过创建文件添加一个web控制器src/main/java/com/okta/springdocker/demo/WebController.java
:
package com.okta.springdocker.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class WebController {
@RequestMapping("/")
public String home() {
return "Welcome!";
}
}
您还需要配置此项目的安全设置。目前,您希望允许所有的请求,所以更新您的DemoApplication.java
存档如下:
package com.okta.springdocker.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Configuration
static class OktaOAuth2WebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll();
}
}
}
您可以通过以下方式编译和运行您的应用程序:
./mvnw package
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文件在构建时被复制到容器中时,每次您想要使用新版本的应用程序时,都需要重新构建容器。因此,周期是:
-
更改您的代码
-
构建应用程序
./mvnw package
-
构建容器
docker build . -t okta:spring_boot_docker
-
运行容器
docker run --publish=8080:8080 okta:spring_boot_docker
-
停止集装箱
-
环路
现在您已经了解了使用Docker容器运行应用程序的基本知识!接下来,您可以将已构建的容器发布到Docker注册中心(如DockerHub),这样其他人就可以获取容器,它就可以运行了。
赞 0