本文是在《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) git@github.com:zq2599/blog_demos.git 该项目源码的仓库地址,ssh协议

这个git项目中有多个文件夹,本章的应用在nacosdemo文件夹下,如下图所示,nacosdemo文件夹下的configdemo就是本文对应的项目源码:

springboot应用开发

  1. 基于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>nacosdemoartifactId>        <groupId>com.bolingcavalrygroupId>        <version>1.0-SNAPSHOTversion>    parent>    <modelVersion>4.0.0modelVersion>    <artifactId>configdemoartifactId>

    <name>configdemoname>    <description>Demo project for Spring Bootdescription>

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

    <dependencies>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-webartifactId>        dependency>

        <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>        dependency>    dependencies>

    <build>        <plugins>            <plugin>                <groupId>org.springframework.bootgroupId>                <artifactId>spring-boot-maven-pluginartifactId>            plugin>

            <plugin>                <groupId>com.google.cloud.toolsgroupId>                <artifactId>jib-maven-pluginartifactId>                <version>1.3.0version>                <configuration>

                    <from>

                        <image>openjdk:8u201-jdk-alpine3.9image>                    from>                    <to>

                        <image>bolingcavalry/nacos${project.artifactId}:${project.version}image>                    to>

                    <container>

                        <jvmFlags>                            <jvmFlag>-Xms1gjvmFlag>                            <jvmFlag>-Xmx1gjvmFlag>                        jvmFlags>

                        <ports>                            <port>8080port>                        ports>                        <useCurrentTimestamp>trueuseCurrentTimestamp>                    container>                configuration>            plugin>        plugins>    build>project>

上述pom.xml文件有两点要注意:

a. 添加依赖spring-cloud-starter-alibaba-nacos-config;

b. 为了生成docker镜像,使用jib插件;

  1. 在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

#配置文件的扩展名,这里使用yamlspring.cloud.nacos.config.file-extension=yaml
  1. 创建启动类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@EnableDiscoveryClientpublic class ConfigdemoApplication {

    public static void main(String[] args) {        SpringApplication.run(ConfigdemoApplication.class, args);    }}
  1. 创建一个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: zq2599@gmail.com * @date: 2019/08/18 18:23 */@RestController@RefreshScopepublic 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";

  1. 以上就是configdemo的所有源码了,在pom.xml所在目录执行以下命令,即可构建docker镜像,存入本地仓库:
mvn compile jib:dockerBuild
  1. 将镜像推送到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配置服务开发的时候,希望本文能给您提供一些参考。

docker配置 nacos_Docker下Nacos配置应用开发相关推荐

  1. Docker下Nacos配置应用开发

    本文是在<Docker下,两分钟极速体验Nacos配置中心>一文的续篇,前面我们快速搭建Nacos配置中心,并且运行一个springboot应用来使用该配置中心的服务,今天来研究这个spr ...

  2. 配置eclipse下的C语言开发环境

    作为eclipse的死忠粉,果断要介绍一下如何在eclipse上进行C语言的开发环境配置 1.       jdk环境配置 2.       eclipse 下载 3.       MinGW 下载安 ...

  3. linux 帐号 配置sftp_Linux 下sftp配置之密钥方式登录详解

    Linux下sftp配置之密钥方式登录 由于vsftp采用明文传输,用户名密码可通过抓包得到,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器.由于sftp使用的是ssh协议,需保证 ...

  4. linux下mysql的配置,Linux下Mysql配置()

    摘要 腾兴网为您分享:Linux下Mysql配置(),智慧医疗,小太阳,享家,相机美颜等软件知识,以及重庆地税12366,正常的小学上课时间表,移动云信,dnf幸运冒险家,八爪龙演播大师,几米入早教, ...

  5. redis linux安装配置,linux下安装配置单点redis

    so easy. step1. 下载资源 redis-4.0.10.tar.gz step2. 解压到 /usr/local/redis下面 tar -zxvf redis-4.0.10.tar.gz ...

  6. iis7 php5 isapi配置,Win7 下 IIS7 配置 PHP5 (Isapi + FastCgi)

    之前有写过在 Apache 下配置 PHP5 的教程,而最近才知道 windows 自带的 IIS 平台对 PHP 也有很好的支持(刚学 PHP 不久),所以打算花点时间来倒腾倒腾,之后就写下这篇博客 ...

  7. centos中的mysql安装配置,Linux下安装配置MySQL

    系统:Ubuntu 16.04LTS 1\官网下载mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2\建立工作组: ? 3\创建目录 ? 4\解压mysql-5.7 ...

  8. GAMES101 作业0 环境配置 PC下简单配置i

    前言 GAMES101提供了计算机图形学相关教学知识,闫教授及其团队也为大家准备了相应课程作业.课程作业部署在虚拟机上,以便免去环境部署的麻烦.但对于一些同学来说,还是希望直接在WIN的VS上使用并编 ...

  9. linux 7 vsftpd 配置,centos7下vsftpd配置

    设置访问用户: a. 安装db_load工具: yum -y install db4-util b. 设置密码文件:vim /etc/vsftpd/vlogin lee 123456 c. 使密码文件 ...

最新文章

  1. 修改 VS2013 项目属性的默认包含路径(全局)
  2. Redis运维和开发学习笔记(3)redis搭建集群
  3. django xadmin出现的问题
  4. JavaScript(一)——变量,数据类型及转换、运算符和逻辑结构
  5. python导入模块_Python导入
  6. 多元统计分析基于r课后答案_应用多元统计分析课后答案.doc
  7. xp系统链接不上宽带连接服务器地址,怎么样解决xp电脑宽带连接不见了
  8. 世界上最早的手动计算机,世界上第一台电子计算机诞生于多少年,名字叫做什么...
  9. 服务器虚拟化双活,分布式双活数据中心部署模式
  10. Win10系统如何调整分区大小?
  11. 从零实现Vue的组件库(十二)- Table 实现
  12. POI 导入带公式的EXCEL 精度出问题
  13. PHP和Python该如何抉择?现在PHP还有前景吗?
  14. 别再叫我 SQL Boy 了!
  15. 宁波旭升特斯拉 EDI项目案例
  16. RouterOS PPPOE Server 服务器设置
  17. Android面试题线程篇
  18. IT 岗位说明书(岗位职责)
  19. PCB设计-数字供电和模拟供电电源隔离
  20. 热电偶单片机代码c语言,基于单片机的热电偶发生器设计(含电路原理图,程序)...

热门文章

  1. 数据中心热度高 苹果也来掺一脚
  2. nagios安装文档
  3. (原)MongoDB在系统中的使用
  4. HTML中td元素的nowrap属性
  5. 84.负载均衡哈希算法:ip_hash与hash模块
  6. 计算机毕业设计中基于python的快递查询系统
  7. sap脚本运行_如何使用Python脚本运行SAP?
  8. 工作展望简短_元旦祝福语大全简短
  9. linux命令大全_Linux 系统下查看硬件信息命令大全
  10. grid赋予oracle磁盘权限,grid 与 Oracle 用户下 Oracle 程序权限不一致导致无法连接 ASM 问题...