docker Desktop + nacos + springCloud 实现项目开发

        注意本文是基于前下面两篇文章的基础上,讲解的,可以先学习一下,在跟着来进行操作。

        基础文章:        

springBoot、springCloud实现配置部署本地nacos

springCloud部署本地docker desktop经验学习-CSDN博客

1 准备

        本博客是在:springCloud部署本地docker desktop经验学习-CSDN博客 案例的基础上进行改进的,请先熟悉该案例的结构。结构图如下:

2 添加yml文件

        根据博客:springBoot、springCloud实现配置部署本地nacos  进行创建命名空间, 创建yml文件等

2.1 项目子模块创建yml文件

        在每个子模块的resources下面创建:bootstrap.yml和bootstrap-xjj.yml,创建内容和图片实例如下:

        bootstrap.yml    

spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: dockerTest1 # 根据不同的子模块,修改不同的名称
  profiles:
    active: xjj

         bootstrap-xjj.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: host.docker.internal:8848
        namespace: 2eafc608-1b0c-4c5c-9bbe-aacbe25e4ff9 # 记得修改成自己的命名空间ID
        auto-register: true
      config:
        server-addr: host.docker.internal:8848
        file-extension: yml
        namespace: 2eafc608-1b0c-4c5c-9bbe-aacbe25e4ff9 # 记得修改成自己的命名空间ID
        #公共配置文件
#        shared-configs: file_ata_processing.yml

        为什么使用:host.docker.internal 而不使用 localhost:

        因为项目会打包部署到 Docker desktop 容器中,当连接运行在主机上的服务时,不能直接使用 `localhost`,因为指的是容器自己的网络命名空间

        Docker 提供了一个特殊的 DNS 名称 `host.docker.internal`,让容器可以访问主机上的服务

原因如下:

        1. 网络隔离:Docker 容器运行在自己独立的网络环境中,因此在容器内使用 `localhost` 指的是容器本身,而不是主机。

        2. 访问主机:要从容器内访问主机上的服务(例如运行在主机上的 Nacos 服务,端口为 `8848`),需要使用 `host.docker.internal`,它是指向主机的别名。这样,容器内部就可以访问主机上的服务。如果使用 `localhost:8848`,容器会试图在自身内部查找服务,而非主机上运行的服务,因此会导致连接失败

        这就是为什么在 Nacos的配置中,你看到 `server-addr` 使用了 `host.docker.internal` 的原因。

2.2 配置pom.xml 文件

        子模块导入:spring-cloud-starter-alibaba-nacos-config 包。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

        父类pom.xml 导入包:spring-cloud-starter-alibaba-nacos-discovery 。

<!--nacos客户端依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.3 可以删除或者注释 application.properties 文件

        删除或者注释 application.properties 文件,否则里面的内容会影响nacos中的yml配置。

2.4 nacos中创建对应子模块的yml文件 

        本地打开nacos创建命名空间:

         写入yml配置:

3 启动项目

        启动准备:打开本地docker desktop 、idea 如果没有连接本地docker ,请根据参考博客进行参考连接、启动nacos。

        对项目进行打包,内容已经更新,需要重新打包部署docker,否则内容不是最新的。

        项目启动到docke desktop。

        dockerTest1 启动成功:

         dockerTest2 启动成功:

        去docker desktop 查看是否存在容器和镜像。

        镜像已经启动成功:

         容器启动成功:

        去nacos 服务列表查看是否存在服务。

        两个服务,启动成功:

        测试接口,是否可以正常访问。

        成功访问:

        通过上面所看到的,以及成功访问到接口说明:说明项目已经成功读取nacos里面的配置(端口号),并成功在docker desktop上部署项目。自此,整个docker desktop + nacos + springCloud 流程就已经走完。

        把docker deskt 换 服务器docker.

        把nacos 换 服务器nacos.

        这不就是一个完整的项目了?

4 结语

        感谢各位的支持和观看,有问题可以留言讨论,一起进步学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值