Skip to content

Spring Boot 最佳实践

Spring Boot 搭建云服务(只用docker)

在Ubuntu下面安装 Docker

1、首先需要先卸载掉通过snap安装的docker,因为限制太多了,不适合开发使用

下图显示的明显就是通过snap安装的 anson@ubuntu-live-server:~$ docker --version Docker version 20.10.24, build 297e128 anson@ubuntu-live-server:~$ which docker /snap/bin/docker 卸载过程很简单,如下所示,使用 remove 卸载,使用 purge删除,这样可以速度快一点,否则会保存快照信息以备恢复,我们显然不需要的。 anson@ubuntu-live-server:~$ sudo snap remove --purge docker [sudo] password for anson: 2024-07-30T04:12:35Z INFO Waiting for "snap.docker.dockerd.service" to stop. docker removed anson@ubuntu-live-server:~$ which docker

2、安装docker 有两种方式,一方面可以使用docker官网脚本,另一种方式是使用apt安装

基础镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:8-jre docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:8-jre docker.io/openjdk:8-jre

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:17 docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:17 docker.io/openjdk:17

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:11-linuxarm64 docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:11-linuxarm64 docker.io/openjdk:11

太简单了,暂缺,回头补充

配置Docker内部网络

太简单了,暂缺,回头补充

  • 创建一个网络 docker network create spring-boot-net
  • 启动镜像的时候指定主机名和网络 docker
  • 测试
docker run -d --network=spring-boot-net  --name eureka.server                            spring_cloud_netflix:latest
docker run -d --network=spring-boot-net  --link eureka.server:eureka.server              spring_cloud_demoapp:latest
docker run -d --network=spring-boot-net  --link eureka.server:eureka.server              spring_cloud_democli:latest
docker run -d --network=spring-boot-net  --link eureka.server:eureka.server              spring_cloud_gateway:latest
docker run -d --network=spring-boot-net  --link eureka.server:eureka.server -p 9080:9080 spring_cloud_demofnt:latest

测试的时候,可以把所有端口都隐射到外部宿主机上,以便观察

docker run -d --network=spring-boot-net --name eureka.server                -p 8002:8002  spring_cloud_netflix:latest
docker run -d --network=spring-boot-net --link eureka.server:eureka.server  -p 8002:8002  spring_cloud_demoapp:latest
docker run -d --network=spring-boot-net --link eureka.server:eureka.server  -p 9003:9003  spring_cloud_democli:latest
docker run -d --network=spring-boot-net --link eureka.server:eureka.server  -p 8003:8003  spring_cloud_gateway:latest
docker run -d --network=spring-boot-net --link eureka.server:eureka.server  -p 9080:9080  spring_cloud_demofnt:latest

使用 ip参数的时候,必须使用 network 必须是 host

docker run -d --network=host --ip 10.1.2.3 spring_cloud_netflix:latest

部署Service Register

太简单了,暂缺,回头补充

部署Service Gateway

太简单了,暂缺,回头补充

部署 SpringBoot Application

太简单了,暂缺,回头补充

把应用发布到Kubernets环境

Spring Boot 搭建云服务(MicroK8s)

在Ubuntu下面安装 MicroK8s

配置 Image Repository

配置 Nginx-Ingress

配置 Service Register

发布 Spring Boot Application Image 到 Repository

部署 Spring Boot Application 到 MicroK8s

配置 Spring Boot Application Service 访问

参考

scp D:\source-code\SpringCloudDemo\SpringCloudDemo\Spring-Cloud-Netflix\build\libs\Spring-Cloud-Netflix-1.0-SNAPSHOT.jar anson@192.168.31.129:/app/docker-image-demo/Spring-Cloud-Demo/Spring-Cloud-Netflix/

scp D:\source-code\SpringCloudDemo\SpringCloudDemo\Spring-Cloud-DemoApp\build\libs\Spring-Cloud-DemoApp-1.0-SNAPSHOT.jar anson@192.168.31.129:/app/docker-image-demo/Spring-Cloud-Demo/Spring-Cloud-DemoApp/

scp D:\source-code\SpringCloudDemo\SpringCloudDemo\Spring-Cloud-DemoClient\build\libs\Spring-Cloud-DemoClient-1.0-SNAPSHOT.jar anson@192.168.31.129:/app/docker-image-demo/Spring-Cloud-Demo/Spring-Cloud-DemoClient/ --hostname 是否像docker容器环境中的域名系统,在引用其他容器时可以替换 --ip ?

--hostname 标志只会更改容器内的主机名。如果您的应用程序需要主机名的特定值,则可能需要这样做。它不会更改 docker 之外的 DNS,也不会更改网络隔离,因此它不会允许其他人使用该名称连接到容器。

您可以使用容器名称或容器的(短,12 个字符)id 使用 docker 的嵌入式 dns 从容器连接到容器,只要您在同一网络上拥有两个容器并且该网络不是默认网桥。 --hostname 是可以与 docker run 命令一起给出的参数,该命令将指定名称设置为容器主机名,而 --ip 是设置特定地址的参数) 到那个特定的容器。

docker run --hostname test --ip 10.1.2.3 ubuntu:14.04

docker 命令参考:

docker中run命令30个常用参数详解和示例

nacos 注册机器: https://download.nacos.io/nacos-server/nacos-server-2.4.0.1.zip 修改startup.sh ,把 nohup 去掉 编写 Dockerfile

FROM openjdk:17
WORKDIR /apps/nacos
COPY nacos ./
EXPOSE 8848
ENTRYPOINT ["bin/startup.sh","-m","standalone"]


制作发布镜像: docker build . -t nacos:derby docker run -p 8848:8848 nacos:derby

Microk8s DashBoard Token找回

anson@macmini:~$ sudo microk8s.kubectl -n kube-system get secret
NAME                              TYPE                                  DATA   AGE
kubernetes-dashboard-certs        Opaque                                0      14h
kubernetes-dashboard-csrf         Opaque                                1      14h
kubernetes-dashboard-key-holder   Opaque                                2      14h
microk8s-dashboard-token          kubernetes.io/service-account-token   3      14h
anson@macmini:~$ microk8s.kubectl -n kube-system describe secret microk8s-dashboard-token

anson@macmini:~$ sudo microk8s.kubectl -n kube-system describe secret microk8s-dashboard-token
Name:         microk8s-dashboard-token
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: default
              kubernetes.io/service-account.uid: aa864dfe-5672-4789-9996-102be255d1fc

Type:  kubernetes.io/service-account-token

Data
====
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjlUY3NaMnBqNzZWbkluU05sTUN4RTlpX1dJUTdrcm0xNWlfelh1LXFWSTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJtaWNyb2s4cy1kYXNoYm9hcmQtdG9rZW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImFhODY0ZGZlLTU2NzItNDc4OS05OTk2LTEwMmJlMjU1ZDFmYyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpkZWZhdWx0In0.pqokHWbEKiGnC9HQy_wlqaIX3mdb9jGHs3kP5vZ912zpxqZWwuNntPUiPzO2D_mha2odbRioFvIDWKokxyi1NUO6U6kC2zPs8QLYkJ8NJapSJZ-IybRKqL6Jq5xwQUo-iZOr37N5dy3r72cRoBY6Hjsa6hncC1leUfpquAAg0wFboWlSUjBq6HkSeFBr8vcRd2Ib_IG6bgTT7st8b_TnN6CcTboS8Y6aahEHmCNIlPcPdCDkPOmZG249iNZJangfprKaqu61114BhZABZZ_hHoAmZU5b82gXPC0XTMgec91Rn5Vwy0-GvKQtEaWXfns4n0ARO6AGF1Y8ZOtxe4ca6A
ca.crt:     1123 bytes
anson@macmini:~$