欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

从零开始学习docker(十四)Docker Compose--部署SpringCloud

发布时间:2024/9/16 javascript 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 从零开始学习docker(十四)Docker Compose--部署SpringCloud 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>

本章节我们介绍如何使用docker-compose部署复杂的application。

先介绍一些docker-compose的简单命令:

docker-compose build

这个命令可以根据docker-compose.yml文件内容,构建服务镜像。

docker-compose up

这个命令可以将服务全部启动。

docker-compose down --rmi all

将docker-compose容器停止,并且删除相应容器镜像。

首先看一下系统架构:

每个微服务都是使用springboot实现的。

Eureka服务

他的application.properties内容如下:

server.port=8080eureka.instance.hostname=192.168.182.151 # 是否向服务中心注册自己 eureka.client.register-with-eureka=false # 是否检索服务 eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

elasticsearch-curl服务

application.properties内容如下:

spring.elasticsearch.rest.uris=192.168.182.149:9200 logging.level.root=INFO logging.file=user.log es.ips[0]=192.168.182.149 es.port=9300 es.clusterName=elasticsearch#注册中心的注册地址 eureka.client.service-url.defaultZone=http://192.168.182.151:8080/eureka/ spring.application.name=elasticsearch-curl-providerserver.port=8081

es-consumer服务

这个服务主要是用于消费es-curl服务的。他的application.propertis内容如下:

#注册中心的注册地址 eureka.client.service-url.defaultZone=http://192.168.182.151:8080/eureka/ spring.application.name=elasticsearch-consumerserver.port=8082

调用服务:

ResponseEntity<Object> objectResponseEntity = restTemplate.postForEntity("http://elasticsearch-curl-provider/add/"+indexName+"/" + type, data, Object.class);

Dockerfile文件内容

Eureka服务:

FROM java:8-alpine MAINTAINER "eureka server" ADD spring-cloud-eureka-server-1.0-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"]

es-curl服务:

FROM java:8-alpine MAINTAINER "es-curl server" ADD elasticsearch-curl-1.0-SNAPSHOT.jar app.jar EXPOSE 8081 ENTRYPOINT ["java", "-jar", "/app.jar"]

es-consumer服务:

FROM java:8-alpine MAINTAINER "es-curl server" ADD elasticsearch-curl-1.0-SNAPSHOT.jar app.jar EXPOSE 8081 ENTRYPOINT ["java", "-jar", "/app.jar"]

docker-compose.yml文件

version: '3'services:eureka:build:context: ./eurekadockerfile: Dockerfilecontainer_name: ddy-eurekaports:- "8080:8080"es-curl:build:context: ./es-curl/.dockerfile: Dockerfilecontainer_name: ddy-es-curldepends_on:- eurekaports:- "8081:8081"links:- eurekaes-consumer:build:context: ./es-consumer/.dockerfile: Dockerfilecontainer_name: ddy-consumerdepends_on:- eureka- es-curlports:- "8082:8082"links:- eureka- es-curl

操作

docker-compose build docker-compose up

访问192.168.182.151:8080

 

更好的方式部署

在eureka服务中,修改application.properties内容:

eureka.instance.hostname=eureka

分别在es-curl和es-consumer服务中的application.properties修改内容:

eureka.client.service-url.defaultZone=http://eureka:8080/eureka/

这样就不需要知道主机的ip是多少了。

实验二:测试简单的eureka生产者和消费者:

项目代码:https://github.com/vincentduan/spring-cloud-project 下面的eureka目录下

eureka server

eureka server中的application.properties内容如下:

server.port=8080eureka.instance.hostname=eureka # 是否向服务中心注册自己 eureka.client.register-with-eureka=false # 是否检索服务 eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

对应的Dockerfile内容如下:

FROM java:8-alpine MAINTAINER "es-curl server" ADD spring-cloud-eureka-server-1.0-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"]

service-provider1

service-provider1中的application.properties内容如下:

# 注册中心的注册地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法 spring.application.name=service-provider-A server.port=8081

对应的Dockerfile内容如下:

FROM java:8-alpine MAINTAINER "es-curl server" ADD spring-cloud-eureka-provider-A-1-1.0-SNAPSHOT.jar app.jar EXPOSE 8081 ENTRYPOINT ["java", "-jar", "/app.jar"]

service-provider2

service-provider2中的application.properties内容如下:

# 注册中心的注册地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法 spring.application.name=service-provider-A server.port=8082

 应的Dockerfile内容如下:

FROM java:8-alpine MAINTAINER "es-curl server" ADD spring-cloud-eureka-provider-A-2-1.0-SNAPSHOT.jar app.jar EXPOSE 8082 ENTRYPOINT ["java", "-jar", "/app.jar"]

 consumer

consumer中的application.properties内容如下:

# 注册中心的注册地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法 spring.application.name=service-consumer-A server.port=8083

 应的Dockerfile内容如下:

# 注册中心的注册地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服务名称--调用的时候根据名称来调用该服务的方法 spring.application.name=service-consumer-A server.port=8083

整个docker-compose.yml文件内容如下:

version: '3'services:eureka:build:context: ./eurekadockerfile: Dockerfilecontainer_name: ddy-eurekaports: - "8080:8080"service-provider-1:build:context: ./provider-1dockerfile: Dockerfilecontainer_name: ddy-provider-1ports:- "8081:8081"depends_on:- eurekalinks:- eurekaservice-provider-2:build:context: ./provider-2dockerfile: Dockerfilecontainer_name: ddy-provider-2ports:- "8082:8082"depends_on:- eurekalinks:- eurekaservice-consumer:build:context: ./consumerdockerfile: Dockerfilecontainer_name: ddy-consumerports:- "8083:8083"depends_on:- eureka- service-provider-1- service-provider-2links:- eureka- service-provider-1- service-provider-2

执行docker-compose build执行构建。

使用命令docker-compose ps 可以查看服务情况:

docker-compose psName Command State Ports -------------------------------------------------------------------- ddy-consumer java -jar /app.jar Up 0.0.0.0:8083->8083/tcp ddy-eureka java -jar /app.jar Up 0.0.0.0:8080->8080/tcp ddy-provider-1 java -jar /app.jar Up 0.0.0.0:8081->8081/tcp ddy-provider-2 java -jar /app.jar Up 0.0.0.0:8082->8082/tcp

docker-compose up 启动项目。

浏览器中输入ip地址:ip:8080可以查看到eureka服务已经启动了。并且能看到provider也已经注册进来了。输入ip:8083/gotoUser/jack多刷几次可以看到启用了不同的provider服务。

总结

以上是生活随笔为你收集整理的从零开始学习docker(十四)Docker Compose--部署SpringCloud的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。