Spring Boot + Docker в Kubernetes, с нуля (видео прилагается)
Сначала мы создадим новый Весеннее загрузочное приложение реализация базовой конечной точки службы HTTP GET. Как только наше приложение запущено и запущено, мы можем создать образ докера и запустить контейнер докера, чтобы протестировать наш сервис. И, наконец, мы возьмем наш образ докера и развернем его в кластере Kubernetes для развертывания производственного уровня.
Докерфайл
Мы используем стандартный образ jre из openjdk для запуска нашего приложения внутри:
FROM openjdk:8-jre-alpine
COPY build/libs/k8-byexamples-spring-rest-0.0.1-SNAPSHOT.jar /application.jar
CMD ["java", "-jar", "/application.jar"]
Makefile (необязательно)
Я создал простой Makefile, чтобы ускорить процесс. Просто сделать все для создания и отправки образа докера. Точно так же вы можете сделать k8/установить для установки манифестов kubernetes:
VERSION ?= $(shell git rev-parse HEAD)
APP ?= k8-byexamples-spring-rest
IMAGE ?= gcr.io/matthewdavis-byexamples/$(APP):$(VERSION)
.PHONY: build
all: build push
build:
docker build -t $(IMAGE) .
run:
docker run -p 8080:8080 $(IMAGE)
push:
docker push $(IMAGE)
k8/install:
kubectl apply -f manifests/
k8/delete:
kubectl delete -f manifests/
TestRestController.java
Это простой контроллер REST, который отвечает на запросы HTTP POST (т.е.:
package com.example.k8byexamplesspringrest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestRestController {
@PostMapping("/echo")
public ResponseEntity<?> testResponse(@RequestBody String body) {
return new ResponseEntity<>("You said: " + body, HttpStatus.OK);
}
}