您的位置:首页 > 运维架构 > Docker

Docker Swarm mode 微服务部署及调用

2017-07-24 23:25 786 查看

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"]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息