我们将探讨如何使用 Java 构建一个简单的云原生应用程序。我们将使用 Spring Boot、Docker 和 Kubernetes 来实现这一目标。
确保你的开发环境中安装了以下工具:
你可以使用 Spring Initializr 创建一个新的 Spring Boot 项目。选择以下依赖:
下载后解压并打开项目。
创建一个简单的 REST 控制器,以返回 "Hello, World!" 消息。
// src/main/java/com/example/demo/controller/HelloController.java
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
确保你的 src/main/resources/application.properties
文件有以下内容:
server.port=8080
使用 Maven 运行应用程序:
mvn spring-boot:run
访问 http://localhost:8080/hello
应该返回 "Hello, World!"。
在项目根目录下创建一个名为 Dockerfile
的文件,并添加以下内容:
# 使用 OpenJDK 作为基础镜像
FROM openjdk:11-jre-slim
# 将 jar 文件复制到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
# 设置入口点
ENTRYPOINT ["java", "-jar", "/app.jar"]
# 暴露端口
EXPOSE 8080
首先,构建项目,然后构建 Docker 镜像:
mvn clean package
docker build -t demo-app .
运行 Docker 容器以测试应用程序。
docker run -p 8080:8080 demo-app
再次访问 http://localhost:8080/hello
,应该能看到同样的响应。
在项目根目录下创建一个名为 k8s-deployment.yaml
的文件,添加以下内容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app
spec:
replicas: 2
selector:
matchLabels:
app: demo-app
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: demo-app
image: demo-app:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: demo-app
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30001
selector:
app: demo-app
在 Kubernetes 集群中部署应用程序:
kubectl apply -f k8s-deployment.yaml
查看 Pods 是否正在运行:
kubectl get pods
获取服务信息:
kubectl get service demo-app
你可以通过访问 http://<Minikube_IP>:30001/hello
来验证应用程序是否正常工作。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。