当前位置: 首页 > news >正文

Docker Compose部署Spring Cloud 微服务系统

我们将为你的环境(CentOS + Docker Compose + Maven + JDK 17)生成并部署一个基础的 Spring Cloud 微服务系统。整个项目结构将包括以下组件:

✅ 项目模块结构(Spring Cloud Alibaba 示例)

springcloud-demo/
├── eureka-server/       # 注册中心
├── config-server/       # 配置中心(可选)
├── gateway/             # 网关服务
├── service-user/        # 用户微服务
├── service-order/       # 订单微服务
└── docker-compose.yml   # 一键部署入口

一、构建服务模块

我们先从最核心的 eureka-server 开始。以下是所需关键文件:

1. eureka-server/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>eureka-server</name><description>Eureka Server for Spring Cloud</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.5</version><relativePath/> <!-- lookup parent from repository --></parent><properties><java.version>17</java.version><spring-cloud.version>2022.0.5</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2. eureka-server/src/main/resources/application.yml

server:port: 8761
eureka:client:register-with-eureka: falsefetch-registry: false

3. EurekaServerApplication.java

package com.example.eureka;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

4. Dockerfile

FROM openjdk:17
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]


二、构建其他模块(如 gatewayservice-user 等)

 1. gateway/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>gateway</artifactId><version>0.0.1-SNAPSHOT</version><name>gateway</name><description>Spring Cloud Gateway</description><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.5</version></parent><properties><java.version>17</java.version><spring-cloud.version>2022.0.5</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2. gateway/src/main/resources/application.yml

server:port: 8080
spring:cloud:gateway:routes: []
eureka:client:service-url:defaultZone: http://eureka-server:8761/eureka

3. GatewayApplication.java

package com.example.gateway;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

4. Dockerfile

FROM openjdk:17
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

可以根据上面结构复用类似配置,接入 Eureka,并配置简单 REST Controller + 注册信息。


三、docker-compose.yml 示例(部署所有服务)

version: '3.8'
services:eureka-server:build: ./eureka-serverports:- "8761:8761"gateway:build: ./gatewayports:- "8080:8080"depends_on:- eureka-serveruser-service:build: ./service-userports:- "8081:8081"depends_on:- eureka-servernetworks:default:name: springcloud-net


四、部署步骤

  1. 上传项目至 CentOS(如:/root/springcloud-demo)

  2. 构建服务

    cd /root/springcloud-demo mvn clean package -DskipTests

进入项目解压目录,依次执行以下命令:

cd eureka-server

mvn clean package -DskipTests

cd ../gateway

mvn clean package -DskipTests

cd ../user-service

mvn clean package -DskipTests

cd ../order-service

mvn clean package -DskipTests

cd ../auth-service

mvn clean package -DskipTests

  1. 构建 & 启动容器

    docker compose up --build -d

  2. 访问 Eureka 控制台

    http://<你的服务器IP>:8761

  3. 访问 user后台 控制台

    http://<你的服务器IP>:8081/hello

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/253611.html

相关文章:

  • 腾讯云搭建web服务器的方法
  • extern关键字:C/C++跨文件编程利器
  • FPGA基础 -- Verilog行为级建模之时序控制
  • 回溯----5.括号生成
  • 如何通过 5 种方式向 Android 手机添加音乐
  • ubuntu下python版本升级导致pyqt不能正常运行解决
  • MSYS2 环境下 Python 开发配置(结合 PyCharm)使用笔记
  • RNN为什么不适合大语言模型
  • html中的table标签以及相关标签
  • ESLint从入门到实战
  • 智净未来:华为智选IAM以科技巧思优化家庭健康饮水体验
  • 2025年中总结
  • Java安全-常规漏洞问题(SQL注入,XXE,SSRF,RCE)
  • Linux系统网络服务之DCHP服务
  • RabbitMQ七种工作模式
  • Kafka入门及实战应用指南
  • 电路图识图基础知识-摇臂钻床识图(三十一)
  • 【学习笔记】2.2 Encoder-Decoder
  • 巧妙解决easyocr在cpu_mode下加载慢的问题~
  • Pandas 核心数据结构详解:Series 和 DataFrame 完全指南
  • MyBatisPlus——逻辑删除
  • import jsonlines ModuleNotFoundError: No module named ‘jsonlines‘
  • 什么是 OpenFeigin ?微服务中的具体使用方式
  • 专业音乐播放器分享,Foobar2000多格式解码的技术实现,界面自定义的实用技巧
  • 【栈】------例题1【铁轨 Rails】
  • react 自定义状态管理库
  • MySQL中的SELECT FOR UPDATE的用法与原理
  • Linux系统移植11:修改网络驱动
  • Python数据操作
  • 大模型的微调和RAG,是如何选择的?