docker部署SpringCloud微服務(wù)項(xiàng)目方式
我們寫好的項(xiàng)目,都需要部署上線,今天就給大家介紹一下,如何將微服務(wù)項(xiàng)目部署上線,一般我們部署項(xiàng)目都是先在本地docker部署一遍,如果沒有問題再部署到服務(wù)器,那么今天我就按照這個(gè)順序來說
前置條件
微服務(wù)項(xiàng)目的pom文件需要這樣添加打包插件
- 在父pom文件中添加如下依賴:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.0.2</version> </plugin> </plugins> </build>
- 在子pom文件添加如下依賴:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> <version>3.0.2</version> </plugin> </plugins> </build>
repackage命令構(gòu)建子模塊時(shí)候,會自動將公共模塊的依賴打入jar包。
說明:這個(gè)子pom文件不是所有的子pom,而是你需要啟動的SpirngBoot的服務(wù)的子模塊,如下圖所示
本地部署
1、先執(zhí)行mvn package命令,對項(xiàng)目進(jìn)行打包或者按照下圖所示進(jìn)行打包
2、為每個(gè)子服務(wù)編寫Dockerfile文件,此處以yz-service-order服務(wù)來說明,其余服務(wù)都類似
# Dockerfile文件 # 基礎(chǔ)鏡像 FROM openjdk:17 # 設(shè)置 LANG 環(huán)境變量為 zh_CN.UTF-8 ENV LANG zh_CN.UTF-8 # 指定工作目錄 WORKDIR /app # 將 jar 包添加到工作目錄, ADD target/yz-service-order-0.0.1-SNAPSHOT.jar . # 暴露端口,網(wǎng)關(guān)端口 EXPOSE 7200 # 啟動命令 ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "/app/yz-service-order-0.0.1-SNAPSHOT.jar", "--spring.profiles.active=prod"]
注意:拉去jdk鏡像的時(shí)候要拉取匹配自己操作系統(tǒng)的,我之前寫的是
FROM openjdk:17-jdk-alpine // 這個(gè)是在windows系統(tǒng)里面寫的,現(xiàn)在環(huán)境是在mac下進(jìn)行的,不知道直接在windows系統(tǒng)里面寫FROM openjdk:17會不會報(bào)錯,沒有測試
所以報(bào)下面的錯誤
3、在本地啟動Docker容器,然后直接點(diǎn)擊這個(gè)按鈕就可以創(chuàng)建鏡像,并啟動服務(wù)啦,這一步主要是檢驗(yàn)鏡像能否創(chuàng)建成功和order服務(wù)能否啟動成功。
4、編寫mysql文件yz-bi.sql,docker創(chuàng)建數(shù)據(jù)庫的時(shí)候,初始化數(shù)據(jù)庫
5、創(chuàng)建docker-compose-env.yml文件,編寫mysql、rabbitmq、redis、nacos鏡像內(nèi)容
version: '3' services: mysql: image: mysql:8.1 container_name: mysql volumes: # 將遠(yuǎn)程數(shù)據(jù)映射到本地目錄/mysql/data - ./mysql/data:/var/lib/mysql # 初始化文件 - ./mysql:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: 123456 ports: - "3306:3306" restart: always networks: - mynetwork redis: image: redis:6 container_name: redis volumes: - ./redis/data:/data ports: - "6379:6379" environment: REQUIREPASS: 123456 restart: always networks: - mynetwork rabbitmq: image: rabbitmq:3.12.6-management container_name: rabbitmq ports: - "5672:5672" - "15672:15672" volumes: # 將遠(yuǎn)程數(shù)據(jù)映射到本地目錄/rabbit/data - ./rabbitmq/data:/var/lib/rabbitmq environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=admin restart: always networks: - mynetwork nacos: image: nacos/nacos-server:v2.2.0-slim container_name: nacos volumes: # 將遠(yuǎn)程數(shù)據(jù)映射到本地/nacos/data目錄 - ./nacos/data:/home/nacos/data ports: - "8848:8848" environment: - MODE=standalone - PREFER_HOSTNAME=hostname - TZ=Asia/Shanghai restart: always networks: - mynetwork networks: mynetwork:
編寫完直接運(yùn)行即可,運(yùn)行結(jié)果如下:
6、創(chuàng)建docker-compose-server.yml文件,編寫業(yè)務(wù)服務(wù)鏡像內(nèi)容
version: '3' services: yz-service-api-gateway: container_name: yz-service-api-gateway build: context: ./yz-service-api-gateway dockerfile: Dockerfile networks: - mynetwork ports: - "7200:7200" yz-service-user: container_name: yz-service-user build: context: ./yz-service-user dockerfile: Dockerfile networks: - mynetwork ports: - "7300:7300" depends_on: - yz-service-api-gateway yz-service-pay: container_name: yz-service-pay build: context: ./yz-service-pay dockerfile: Dockerfile networks: - mynetwork ports: - "7400:7400" depends_on: - yz-service-api-gateway yz-service-promotion: container_name: yz-service-promotion build: context: ./yz-service-promotion dockerfile: Dockerfile networks: - mynetwork ports: - "7500:7500" depends_on: - yz-service-api-gateway yz-service-order: container_name: yz-service-order build: context: ./yz-service-order dockerfile: Dockerfile ports: - "7600:7600" networks: - mynetwork depends_on: - yz-service-pay - yz-service-promotion - yz-service-api-gateway yz-service-bi: container_name: yz-service-bi build: context: ./yz-service-bi dockerfile: Dockerfile ports: - "7700:7700" networks: - mynetwork depends_on: - yz-service-user - yz-service-api-gateway # 網(wǎng)絡(luò),不定義的話就是默認(rèn)網(wǎng)絡(luò) networks: mynetwork:
7、修改配置文件
因?yàn)槲业膍ysql、rabbitmq、redis的配置信息寫在nacos中,所以,在瀏覽器打開剛才部署的nacos控制面板,創(chuàng)建配置文件,
文件內(nèi)容如下:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver # 這塊的url換成容器名稱mysql url: jdbc:mysql://mysql:3306/yz?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true username: "root" password: "123456" rabbitmq: # 換成容器名稱rabbitmq host: rabbitmq port: 5672 username: admin password: admin yz: redis: host: redis port: 6379 password: 123456 timeout: 3000
簡單來說,就是把你配置文件中所有的host換成對應(yīng)的容器名稱即可
8、運(yùn)行docker-compose-service.yml文件即可。
最后查看docker容器面板,所有服務(wù)都啟動成功。
本項(xiàng)目集成了knife,通過localhost:端口號/doc.html就可以訪問,訪問結(jié)果如下:
這樣微服務(wù)項(xiàng)目在本地就部署成功
部署到服務(wù)器
服務(wù)器部署和本地部署類似,只要本地部署成功了,把項(xiàng)目方到服務(wù)器就是執(zhí)行.yml文件。
環(huán)境準(zhǔn)備
1、服務(wù)器安裝maven
2、服務(wù)器安裝Docker、Docker Compose
開始
1、將項(xiàng)目拷貝到服務(wù)器,比如說拷貝到/usr/local/java/yz目錄下
2、cd /usr/local/java/yz
3、執(zhí)行mvn package
4、執(zhí)行命令
# 先部署mysql、rabbitmq、nacos和redis docker compose -f docker-compose-env.yml up # 再部署服務(wù)命令 docker compose -f docker-compose-service.yml up
這樣基本就部署成功了!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
centos下docker安裝及springboot遠(yuǎn)程發(fā)布docker的方法
這篇文章主要介紹了centos下docker安裝及springboot遠(yuǎn)程發(fā)布docker的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04項(xiàng)目訪問使用docker bridge網(wǎng)絡(luò)模式(端口映射)配置過程
這篇文章主要介紹了項(xiàng)目訪問使用docker bridge網(wǎng)絡(luò)模式(端口映射)配置過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03Docker實(shí)現(xiàn)分布式應(yīng)用功能教程
這篇文章主要介紹了Docker實(shí)現(xiàn)分布式應(yīng)用功能,涉及docker分布式應(yīng)用、負(fù)載均衡相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-06-06docker安裝nacos并配置數(shù)據(jù)庫的全過程
這篇文章主要給大家介紹了關(guān)于docker安裝nacos并配置數(shù)據(jù)庫的相關(guān)資料, Nacos是SpringCloudAlibaba架構(gòu)中最重要的組件,Nacos 是一個(gè)更易于幫助構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置和服務(wù)管理平臺,文中介紹的非常信息,需要的朋友可以參考下2023-09-09樹莓派3B+安裝64位ubuntu系統(tǒng)和docker工具的操作步驟詳解
這篇文章主要介紹了樹莓派3B+安裝64位ubuntu系統(tǒng)和docker工具,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Docker使用Dockerfile創(chuàng)建支持ssh服務(wù)自啟動的容器鏡像
這篇文章主要介紹了Docker使用Dockerfile創(chuàng)建支持ssh服務(wù)自啟動的容器鏡像,需要的朋友可以參考下2016-10-10docker部署mysql8并設(shè)置可遠(yuǎn)程連接
本文主要介紹了docker部署mysql8并設(shè)置可遠(yuǎn)程連接,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07docker-compose部署etcd集群的實(shí)現(xiàn)步驟
本文主要介紹了docker-compose部署etcd集群的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10pod污點(diǎn)taint?與容忍度tolerations詳解
這篇文章主要為大家介紹了pod污點(diǎn)taint與容忍度tolerations示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11