DockerCompose-部署微服务集群
部署微服務集群
需求:將之前學習的cloud-demo微服務集群利用DockerCompose部署
實現思路:
① 查看提供的cloud-demo文件夾,里面已經編寫好了docker-compose文件
② 修改自己的cloud-demo項目,將數據庫、nacos地址都命名為docker-compose中的服務名
③ 使用maven打包工具,將項目中的每個微服務都打包為app.jar
④ 將打包好的app.jar拷貝到cloud-demo中的每一個對應的子目錄中
⑤ 將cloud-demo上傳至虛擬機,利用 docker-compose up -d 來部署
compose文件
查看課前資料提供的cloud-demo文件夾,里面已經編寫好了docker-compose文件,而且每個微服務都準備了一個獨立的目錄:
內容如下:
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個service服務:
-
nacos:作為注冊中心和配置中心
-
image: nacos/nacos-server: 基于nacos/nacos-server鏡像構建
-
environment:環境變量
-
MODE: standalone:單點模式啟動
-
-
ports:端口映射,這里暴露了8848端口
-
-
mysql:數據庫
-
image: mysql:5.7.25:鏡像版本是mysql:5.7.25
-
environment:環境變量
-
MYSQL_ROOT_PASSWORD: 123:設置數據庫root賬戶的密碼為123
-
-
volumes:數據卷掛載,這里掛載了mysql的data、conf目錄,其中有我提前準備好的數據
-
-
userservice、orderservice、gateway:都是基于Dockerfile臨時構建的
查看mysql目錄,可以看到其中已經準備好了cloud_order、cloud_user表:
查看微服務目錄,可以看到都包含Dockerfile文件: ?
內容如下: ?
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
修改微服務配置
因為微服務將來要部署為docker容器,而容器之間互聯不是通過IP地址,而是通過容器名。這里我們將order-service、user-service、gateway服務的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服務地址打包
接下來需要將我們的每個微服務都打包。因為之前查看到Dockerfile中的jar包名稱都是app.jar,因此我們的每個微服務都需要用這個名稱。
可以通過修改pom.xml中的打包名稱來實現,每個微服務都需要修改:
<build><!-- 服務打包的最終名稱 --><finalName>app</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins> </build>打包后:
拷貝jar包到部署目錄
編譯打包好的app.jar文件,需要放到Dockerfile的同級目錄中。注意:每個微服務的app.jar放到與服務名稱對應的目錄,別搞錯了。
user-service:
?order-service:
gateway:
部署
最后,我們需要將文件整個cloud-demo文件夾上傳到虛擬機中,理由DockerCompose部署。
上傳到任意目錄:
部署:
進入cloud-demo目錄,然后運行下面的命令:
docker-compose up -d總結
以上是生活随笔為你收集整理的DockerCompose-部署微服务集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ快速入门--简单队列模型
- 下一篇: Docker镜像仓库