Docker Swarm mode 微服务部署及调用

Docker Swarm mode 微服务部署及调用

使用spring boot 开发两个应用,分别命名为test-a、test-b, test-a 为服务提供者、test-b 为服务消费者,test-b 在swarm mode 集群中通过服务 test-a 部署时指定的服务名称调用服务。


服务提供者 test-a 代码如下:

@RestController
public classTestAContoller(){

    @GetMapping("/info")
    public String getAInfo(){
        return "A 的服务信息"; //返回A服务的服务信息
    }
}
@SpringBootApplication
public class WebApplication(){
    public static void main(String[] args){
        SpringApplication.run(AWebApplication.class,args);
    }
}

application.properties

server.port=80
spring.application.name=testAService

服务消费者 test-b 代码如下:

@RestController
public class TestBContoller(){

    @Bean
    RestTemplate restTemplate();

    @GetMapping("/a/info")
    public String getAInfo(){
        String message = restTemplate.getForObject("http://testAService/info",String.class);
        return "A : " + message; //返回A服务的服务信息
    }
}
@SpringBootApplication
public class WebApplication(){
    public static void main(String[] args){
        SpringApplication.run(WebApplication.class,args);
    }
}

application.properties

server.port=80
spring.application.name=testBService

Swarm mode 服务部署

运行 docker 服务创建命令分别部署test-a 、test-b:

docker service create   \
      --replicas 2 \
      --name testAService \
      test-a:1.0

docker service create   \
      --replicas 2 \
      --publish 8080:80
      --name testBService \
      test-a:1.0

服务部署之后即可通过 http://localhost:8080/a/info 验证服务是否调用成功!!!


Dockerfile 文件

test-a: docker build -t test-a:1.0 .

FROM java:8-jre-alpine

ADD test-a.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

test-b: docker build -t test-b:1.0 .

FROM java:8-jre-alpine

ADD test-b.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

你可能感兴趣的:(docker,swarm,mode)