首页 > 其他分享 >Docker下Nacos配置应用开发

Docker下Nacos配置应用开发

时间:2022-10-12 16:35:09浏览次数:82  
标签:配置 Nacos springframework nacos org Docker config cloud

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

  • 本文是在《Docker下,两分钟极速体验Nacos配置中心》一文的续篇,前面我们快速搭建Nacos配置中心,并且运行一个springboot应用来使用该配置中心的服务,今天来研究这个springboot应用的细节,学习springboot应用如何使用Nacos配置中心的服务;

系列文章链接

  • 下面是《Spring Cloud Alibaba实战系列》的所有文章地址:
  1. 《Docker下,两分钟极速体验Nacos》
  2. 《Docker下的Nacos环境开发》
  3. 《Docker下,两分钟极速体验Nacos配置中心》
  4. 《Docker下Nacos配置应用开发》

环境信息

  1. 操作系统:CentOS Linux release 7.6.1810
  2. Docker:1.13.1, build b2f74b2/1.13.1
  3. docker-compose:1.24.1, build 4667896
  4. jdk:1.8.0_191
  5. maven:3.6.0

源码下载

  • 如果您不打算写代码,也可以从GitHub上下载本次实战的源码,地址和链接信息如下表所示:
名称 链接 备注
项目主页 https://github.com/zq2599/blog_demos 该项目在GitHub上的主页
git仓库地址(https) https://github.com/zq2599/blog_demos.git 该项目源码的仓库地址,https协议
git仓库地址(ssh) [email protected]:zq2599/blog_demos.git 该项目源码的仓库地址,ssh协议
  • 这个git项目中有多个文件夹,本章的应用在nacosdemo文件夹下,如下图所示,nacosdemo文件夹下的configdemo就是本文对应的项目源码: 在这里插入图片描述

springboot应用开发

  • 基于maven创建名为nacosdemo的springboot应用,pom.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacosdemo</artifactId>
        <groupId>com.bolingcavalry</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>configdemo</artifactId>

    <name>configdemo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--使用jib插件-->
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>1.3.0</version>
                <configuration>
                    <!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
                    <from>
                        <!--使用openjdk官方镜像,tag是8u201-jdk-alpine3.9,表示镜像的操作系统是alpine3.9,装好了jdk8u201-->
                        <image>openjdk:8u201-jdk-alpine3.9</image>
                    </from>
                    <to>
                        <!--镜像名称和tag,使用了mvn内置变量${project.artifactId}和${project.version}-->
                        <image>bolingcavalry/nacos${project.artifactId}:${project.version}</image>
                    </to>
                    <!--容器相关的属性-->
                    <container>
                        <!--jvm内存参数-->
                        <jvmFlags>
                            <jvmFlag>-Xms1g</jvmFlag>
                            <jvmFlag>-Xmx1g</jvmFlag>
                        </jvmFlags>
                        <!--要暴露的端口-->
                        <ports>
                            <port>8080</port>
                        </ports>
                        <useCurrentTimestamp>true</useCurrentTimestamp>
                    </container>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • 上述pom.xml文件有两点要注意: a. 添加依赖 spring-cloud-starter-alibaba-nacos-config ; b. 为了生成docker镜像,使用jib插件;

  • src\main\resources 这个目录下,将原有的application.properties或者application.yml都删除干净,只保留一个名为 bootstrap.properites 的文件,内容如下所示:

#应用名
spring.application.name=config-demo

#nacos配置中心的地址和端口,"nacos"是docker-compose.yml中的nacos容器名
spring.cloud.nacos.config.server-addr=nacos:8848

#配置的分组
spring.cloud.nacos.config.group=BOLING_CAVALRY

#对应配置文件的ID,如果没有这个配置,就按照应用名称"config-demo"去nacos上寻找
spring.cloud.nacos.config.prefix=my-nacos-config

#配置文件的扩展名,这里使用yaml
spring.cloud.nacos.config.file-extension=yaml
  • 创建启动类ConfigdemoApplication.java,增加一个注解EnableDiscoveryClient:
package com.bolingcavalry.configdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ConfigdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigdemoApplication.class, args);
    }
}
  • 创建一个Controller类ConfigController.java,用于提供一个http服务,返回的内容来自配置信息,如果能使用Nacos提供的配置服务,这里返回的应该是在Nacos上配置的内容:
package com.bolingcavalry.configdemo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Description: 提供web服务的controller
 * @author: willzhao E-mail: [email protected]
 * @date: 2019/08/18 18:23
 */
@RestController
@RefreshScope
public class ConfigController {

    @Value("${bolingcavalry.desc:desc from code}")
    private String desc;

    @RequestMapping("/test")
    public String test(){
        return desc + new SimpleDateFormat(" [yyyy-mm-dd  HH:mm:ss]").format(new Date());
    }
}
  • 上述代码有两处需要注意: a. RefreshScope注解用于声明配置信息变化后立即同步至此; b. desc变量的值来自@Value注解,如果无法从Nacos取得"bolingcavalry.desc"对应的值,desc的值就是默认的"desc from code";

  • 以上就是configdemo的所有源码了,在pom.xml所在目录执行以下命令,即可构建docker镜像,存入本地仓库:

mvn compile jib:dockerBuild
  • 将镜像推送到hub.docker.com,这样大家都可以下载此镜像来用了:
docker push bolingcavalry/nacosconfigdemo:1.0-SNAPSHOT
  • 现在镜像文件已经准备好了,接下来做容器编排;

容器编排

  • 创建docker-compose.yml文件,如下所示,nacos我们在前面的章节已经介绍过了,是nacos server作成的镜像,config-demo是刚才构建好的springboot应用镜像:
version: '2'
services:
  nacos:
    image: bolingcavalry/nacosserver:0.0.1
    container_name: nacos
    restart: unless-stopped
    ports:
    - '8848:8848'
  config-demo:
    image: bolingcavalry/nacosconfigdemo:1.0-SNAPSHOT
    container_name: config-demo
    restart: unless-stopped
    depends_on:
    - nacos
    ports:
    - '8080:8080'
  • 至此,上一篇实战所需的源码和配置就全部介绍完毕,在您着手nacos配置服务开发的时候,希望本文能给您提供一些参考。

欢迎关注51CTO博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

标签:配置,Nacos,springframework,nacos,org,Docker,config,cloud
From: https://blog.51cto.com/zq2599/5748776

相关文章

  • 用docker布tomcat访问出现HTTP状态404-未找到“源服务器未能找到目标资源的表示或者是
    docker部署tomcat访问显示这个的原因是在访问的时候没有访问到web文件的网页页面进入容器查看webapps文件夹中没有任何文件  将.dist文件夹中的页面文件复制到weba......
  • 【杂谈】您想要的docker环境来了!
    深度学习环境配置一直是大家学习AI的拦路虎,不管你是久经沙场的大佬,还是初出茅庐的小伙,相信你肯定被linux系统环境坑过。快到周末了,咱们就不聊高深莫测的算法了,今天咱们就聊......
  • Sql Server 配置复制中的对等发布
    首先准备两个服务器,两个数据库实例,在任意一个数据库上可以通过实例名连接到另外一个数据库,并且SqlServer的代理服务都启动了那么就可以右键新建发布了选中要发布的数据......
  • Docker, containerd, CRI-O and runc之间的区别?
    1、概述在容器生态系统中充斥着各种各样的术语,今天就来为你,一一解码! Docker开启了容器的时代,但不久之后,工具、标准和首字母缩略词似乎在这一领域爆发。那么,“docker”......
  • UEditor removeFormatTags 清除格式 配置无效 踩坑
       看到官网写着配置清除格式是removeFormatTags字段 ,然后就在ueditor.config文件中新增了一个removeFormatTags字段toolbars    但是发现......
  • Mysql主主同步配置方法
    环境服务器a:172.16.0.123服务器b:172.16.0.132Mysql版本:5.6.22SystemOS:CentOSrelease6.3创建同步用户服务器a和b分别建立一个同步用户:mysql>grantreplications......
  • 关于 springcloud + nacos 启动报错:nacos save snapshot error
    关于nacos报错:nacossavesnapshoterror1:首先这个nacos报错并不影响你的正常使用,但是每次启动错误都会报错nacossavesnapshoterror,找不到config的配置;2:确......
  • spring-boot配置属性注入到Bean
    1.在属性文件中配置book实体 2.创建配置属性对应实体类与控制器 3.输出实体时乱码在属性配置文件中加入spring.http.encoding.force=truespring.http.encoding.charset=UT......
  • 定价条件相关1:配置
    MEK1和VK11MEK1是采购用的VK11是销售用的一个是配买的价格,一个是配卖的价格前台界面是一样的:​​​​回车后......
  • DHCP原理与配置
    一、DHCP服务1.DHCP DynamicHostConfigurationProtocol,动态主机配置协议专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议2.DHCP的优点•减少管理员的......