日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

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

發(fā)布時(shí)間:2024/9/16 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始学习docker(十四)Docker Compose--部署SpringCloud 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

擼了今年阿里、頭條和美團(tuán)的面試,我有一個(gè)重要發(fā)現(xiàn).......>>>

本章節(jié)我們介紹如何使用docker-compose部署復(fù)雜的application。

先介紹一些docker-compose的簡(jiǎn)單命令:

docker-compose build

這個(gè)命令可以根據(jù)docker-compose.yml文件內(nèi)容,構(gòu)建服務(wù)鏡像。

docker-compose up

這個(gè)命令可以將服務(wù)全部啟動(dòng)。

docker-compose down --rmi all

將docker-compose容器停止,并且刪除相應(yīng)容器鏡像。

首先看一下系統(tǒng)架構(gòu):

每個(gè)微服務(wù)都是使用springboot實(shí)現(xiàn)的。

Eureka服務(wù)

他的application.properties內(nèi)容如下:

server.port=8080eureka.instance.hostname=192.168.182.151 # 是否向服務(wù)中心注冊(cè)自己 eureka.client.register-with-eureka=false # 是否檢索服務(wù) eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

elasticsearch-curl服務(wù)

application.properties內(nèi)容如下:

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#注冊(cè)中心的注冊(cè)地址 eureka.client.service-url.defaultZone=http://192.168.182.151:8080/eureka/ spring.application.name=elasticsearch-curl-providerserver.port=8081

es-consumer服務(wù)

這個(gè)服務(wù)主要是用于消費(fèi)es-curl服務(wù)的。他的application.propertis內(nèi)容如下:

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

調(diào)用服務(wù):

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

Dockerfile文件內(nèi)容

Eureka服務(wù):

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服務(wù):

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服務(wù):

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

訪問(wèn)192.168.182.151:8080

?

更好的方式部署

在eureka服務(wù)中,修改application.properties內(nèi)容:

eureka.instance.hostname=eureka

分別在es-curl和es-consumer服務(wù)中的application.properties修改內(nèi)容:

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

這樣就不需要知道主機(jī)的ip是多少了。

實(shí)驗(yàn)二:測(cè)試簡(jiǎn)單的eureka生產(chǎn)者和消費(fèi)者:

項(xiàng)目代碼:https://github.com/vincentduan/spring-cloud-project?下面的eureka目錄下

eureka server

eureka server中的application.properties內(nèi)容如下:

server.port=8080eureka.instance.hostname=eureka # 是否向服務(wù)中心注冊(cè)自己 eureka.client.register-with-eureka=false # 是否檢索服務(wù) eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

對(duì)應(yīng)的Dockerfile內(nèi)容如下:

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內(nèi)容如下:

# 注冊(cè)中心的注冊(cè)地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服務(wù)名稱(chēng)--調(diào)用的時(shí)候根據(jù)名稱(chēng)來(lái)調(diào)用該服務(wù)的方法 spring.application.name=service-provider-A server.port=8081

對(duì)應(yīng)的Dockerfile內(nèi)容如下:

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內(nèi)容如下:

# 注冊(cè)中心的注冊(cè)地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服務(wù)名稱(chēng)--調(diào)用的時(shí)候根據(jù)名稱(chēng)來(lái)調(diào)用該服務(wù)的方法 spring.application.name=service-provider-A server.port=8082

?應(yīng)的Dockerfile內(nèi)容如下:

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內(nèi)容如下:

# 注冊(cè)中心的注冊(cè)地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服務(wù)名稱(chēng)--調(diào)用的時(shí)候根據(jù)名稱(chēng)來(lái)調(diào)用該服務(wù)的方法 spring.application.name=service-consumer-A server.port=8083

?應(yīng)的Dockerfile內(nèi)容如下:

# 注冊(cè)中心的注冊(cè)地址 eureka.client.service-url.defaultZone=http://eureka:8080/eureka/# 服務(wù)名稱(chēng)--調(diào)用的時(shí)候根據(jù)名稱(chēng)來(lái)調(diào)用該服務(wù)的方法 spring.application.name=service-consumer-A server.port=8083

整個(gè)docker-compose.yml文件內(nèi)容如下:

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

執(zhí)行docker-compose?build執(zhí)行構(gòu)建。

使用命令docker-compose ps 可以查看服務(wù)情況:

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 啟動(dòng)項(xiàng)目。

瀏覽器中輸入ip地址:ip:8080可以查看到eureka服務(wù)已經(jīng)啟動(dòng)了。并且能看到provider也已經(jīng)注冊(cè)進(jìn)來(lái)了。輸入ip:8083/gotoUser/jack多刷幾次可以看到啟用了不同的provider服務(wù)。

總結(jié)

以上是生活随笔為你收集整理的从零开始学习docker(十四)Docker Compose--部署SpringCloud的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。