DockerCompose-部署微服务集群
部署微服務(wù)集群
需求:將之前學(xué)習(xí)的cloud-demo微服務(wù)集群利用DockerCompose部署
實(shí)現(xiàn)思路:
① 查看提供的cloud-demo文件夾,里面已經(jīng)編寫好了docker-compose文件
② 修改自己的cloud-demo項(xiàng)目,將數(shù)據(jù)庫(kù)、nacos地址都命名為docker-compose中的服務(wù)名
③ 使用maven打包工具,將項(xiàng)目中的每個(gè)微服務(wù)都打包為app.jar
④ 將打包好的app.jar拷貝到cloud-demo中的每一個(gè)對(duì)應(yīng)的子目錄中
⑤ 將cloud-demo上傳至虛擬機(jī),利用 docker-compose up -d 來部署
compose文件
查看課前資料提供的cloud-demo文件夾,里面已經(jīng)編寫好了docker-compose文件,而且每個(gè)微服務(wù)都準(zhǔn)備了一個(gè)獨(dú)立的目錄:
內(nèi)容如下:
version: "3.2"services:nacos:image: nacos/nacos-serverenvironment:MODE: standaloneports:- "8848:8848"mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123volumes:- "$PWD/mysql/data:/var/lib/mysql"- "$PWD/mysql/conf:/etc/mysql/conf.d/"userservice:build: ./user-serviceorderservice:build: ./order-servicegateway:build: ./gatewayports:- "10010:10010"可以看到,其中包含5個(gè)service服務(wù):
-
nacos:作為注冊(cè)中心和配置中心
-
image: nacos/nacos-server: 基于nacos/nacos-server鏡像構(gòu)建
-
environment:環(huán)境變量
-
MODE: standalone:單點(diǎn)模式啟動(dòng)
-
-
ports:端口映射,這里暴露了8848端口
-
-
mysql:數(shù)據(jù)庫(kù)
-
image: mysql:5.7.25:鏡像版本是mysql:5.7.25
-
environment:環(huán)境變量
-
MYSQL_ROOT_PASSWORD: 123:設(shè)置數(shù)據(jù)庫(kù)root賬戶的密碼為123
-
-
volumes:數(shù)據(jù)卷掛載,這里掛載了mysql的data、conf目錄,其中有我提前準(zhǔn)備好的數(shù)據(jù)
-
-
userservice、orderservice、gateway:都是基于Dockerfile臨時(shí)構(gòu)建的
查看mysql目錄,可以看到其中已經(jīng)準(zhǔn)備好了cloud_order、cloud_user表:
查看微服務(wù)目錄,可以看到都包含Dockerfile文件: ?
內(nèi)容如下: ?
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
修改微服務(wù)配置
因?yàn)槲⒎?wù)將來要部署為docker容器,而容器之間互聯(lián)不是通過IP地址,而是通過容器名。這里我們將order-service、user-service、gateway服務(wù)的mysql、nacos地址都修改為基于容器名的訪問。
如下所示:
spring:datasource:url: jdbc:mysql://mysql:3306/cloud_order?useSSL=falseusername: rootpassword: 123driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservicecloud:nacos:server-addr: nacos:8848 # nacos服務(wù)地址打包
接下來需要將我們的每個(gè)微服務(wù)都打包。因?yàn)橹安榭吹紻ockerfile中的jar包名稱都是app.jar,因此我們的每個(gè)微服務(wù)都需要用這個(gè)名稱。
可以通過修改pom.xml中的打包名稱來實(shí)現(xiàn),每個(gè)微服務(wù)都需要修改:
<build><!-- 服務(wù)打包的最終名稱 --><finalName>app</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins> </build>打包后:
拷貝jar包到部署目錄
編譯打包好的app.jar文件,需要放到Dockerfile的同級(jí)目錄中。注意:每個(gè)微服務(wù)的app.jar放到與服務(wù)名稱對(duì)應(yīng)的目錄,別搞錯(cuò)了。
user-service:
?order-service:
gateway:
部署
最后,我們需要將文件整個(gè)cloud-demo文件夾上傳到虛擬機(jī)中,理由DockerCompose部署。
上傳到任意目錄:
部署:
進(jìn)入cloud-demo目錄,然后運(yùn)行下面的命令:
docker-compose up -d總結(jié)
以上是生活随笔為你收集整理的DockerCompose-部署微服务集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ快速入门--简单队列模型
- 下一篇: Docker镜像仓库