Docker下的Nacos环境开发,java使用教程视频

这篇博客介绍了如何在Docker环境下利用Nacos进行服务提供者和消费者的应用开发。首先,展示了如何构建服务提供者的Docker镜像,包括依赖设置、配置文件和应用代码。接着,创建服务消费者的Docker镜像,同样涉及依赖、配置和代码实现。最后,通过docker-compose.yml文件完成容器编排。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

org.springframework.cloud

spring-cloud-alibaba-dependencies

${spring.cloud.alibaba.version}

pom

import

org.apache.maven.plugins

maven-compiler-plugin

${java.version}

${java.version}

${project.build.sourceEncoding}

可见这是个普通的父工程,里面对spring cloud和spring cloud alibaba的版本做了控制,避免子工程还要各种指定版本的繁琐操作;

制作服务提供者镜像

simple-provider是个java web应用,使用了spring cloud alibaba的依赖库之后可以使用Nacos的注册发现服务,整个工程的开发步骤如下:

  1. 基于maven创建工程,其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”>

nacosdemo

com.bolingcavalry

1.0-SNAPSHOT

4.0.0

simpleprovider

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.boot

spring-boot-maven-plugin

com.google.cloud.tools

jib-maven-plugin

1.3.0

openjdk:8u201-jdk-alpine3.9

bolingcavalry/nacos p r o j e c t . a r t i f a c t I d : {project.artifactId}: project.artifactId:{project.version}

-Xms1g

-Xmx1g

上述内容有两点需要注意:

a. 依赖spring-cloud-starter-alibaba-nacos-discovery,这样可以用上spring cloud nacos的服务;

b. 使用了maven插件jib-maven-plugin,用于将应用构建成docker镜像,此插件相关的详情请参考《Docker与Jib(maven插件版)实战》

2. 配置文件application.properties,配置应用名称和nacos地址,注意这里nacos地址配置的是nacoshost,对应的是后面docker-compose.yml中的link参数:

spring.application.name=simple-provider

spring.cloud.nacos.discovery.server-addr=nacoshost:8848

  1. 应用启动类SimpleProviderApplication ,配置了注解EnableDiscoveryClient,用于启动注册发现服务:

package simpleprovider;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient

@SpringBootApplication

public class SimpleProviderApplication {

public static void main(String[] args) {

SpringApplication.run(SimpleProviderApplication.class, args);

}

}

  1. 增加一个提供http服务的controller类ProviderController:

package simpleprovider.controller;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

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/7/28 11:08

*/

@RestController

public class ProviderController {

@RequestMapping(value = “/hello/{name}”, method = RequestMethod.GET)

public String hello(@PathVariable(“name”) String name){

return "hello " + name + ", " + new SimpleDateFormat(“yyyy-mm-dd HH:mm:ss”).format(new Date());

}

}

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

mvn compile jib:dockerBuild

制作服务消费者镜像

simple-consumer是个java web应用,启动后对外提供http服务,响应的时候,通过nacos取得simple-provider的地址,然后向simple-provider发请求,将响应返回给浏览器:

  1. 基于maven创建工程,其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”>

nacosdemo

com.bolingcavalry

1.0-SNAPSHOT

4.0.0

simpleconsumer

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.boot

spring-boot-maven-plugin

com.google.cloud.tools

jib-maven-plugin

1.3.0

openjdk:8u201-jdk-alpine3.9

bolingcavalry/nacos p r o j e c t . a r t i f a c t I d : {project.artifactId}: project.artifactId:{project.version}

-Xms1g

-Xmx1g

8080

  1. 配置文件application.properties,配置应用名称和nacos地址,注意这里nacos地址配置的是nacoshost,对应的是后面docker-compose.yml中的link参数:

spring.application.name=simple-consumer

spring.cloud.nacos.discovery.server-addr=nacoshost:8848

  1. 应用启动类SimpleConsumerApplication,配置了注解EnableDiscoveryClient,用于启动注册发现服务:

package com.bolingcavalry.simpleconsumer;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient

@SpringBootApplication

public class SimpleConsumerApplication {

public static void main(String[] args) {

SpringApplication.run(SimpleConsumerApplication.class, args);

}

}

  1. 增加一个提供http服务的controller类ConsumerController,通过LoadBalancerClient取得simple-provider的服务地址,然后发请求过去 :

package com.bolingcavalry.simpleconsumer.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.cloud.client.ServiceInstance;

import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.client.RestTemplate;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

  • @Description: 提供web服务的controller

  • @author: willzhao E-mail: zq2599@gmail.com

  • @date: 2019/7/28 11:08

*/

@RestController

public class ConsumerController {

@Autowired

LoadBalancerClient loadBalancerClient;

@RequestMapping("/test")

public String test(){

//根据应用名称取得实例对象

ServiceInstance serviceInstance = loadBalancerClient.choose(“simple-provider”);

//根据实例对象取得地址

String uri = serviceInstance.getUri().toString();

String result = new RestTemplate().getForObject(uri + “/hello/bolingcavalry”, String.class);

return "provider uri : " + uri + “
” + “response :” + result;

}

}

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

mvn compile jib:dockerBuild

编写docker-compose.yml

三个镜像都准备好了,接下来是做容器编排,docker-compose.yml内容如下:

version: ‘2’

services:

nacos:

i

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

mage: bolingcavalry/nacosserver:0.0.1

container_name: nacos

restart: unless-stopped

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值