SpringBoot3+ApolloClient2.3.0集成Apollo2.4.0示例
一、Docker-Compose部署Apollo
- 构建docker-compose启动文件
version: '3'
services:apollo-configservice:image: apolloconfig/apollo-configservice:latestnetworks:- apollo-networkports:- "20001:8080"environment:- SPRING_PROFILES_ACTIVE=dev- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=123456- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver- EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://apollo-configservice:8080/eureka/- EUREKA_INSTANCE_PREFER_IP_ADDRESS=true- EUREKA_INSTANCE_IP_ADDRESS=宿主机IP地址depends_on:- mysqlhealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/health"]interval: 30stimeout: 10sretries: 15apollo-adminservice:image: apolloconfig/apollo-adminservice:latestnetworks:- apollo-networkports:- "20002:8090"depends_on:- apollo-configserviceenvironment:- SPRING_PROFILES_ACTIVE=dev- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=123456- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver- EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://apollo-adminservice:8090/eureka/- EUREKA_INSTANCE_PREFER_IP_ADDRESS=truehealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8090/health"]interval: 30stimeout: 10sretries: 15restart: alwaysapollo-portal:image: apolloconfig/apollo-portal:latestnetworks:- apollo-networkports:- "20003:8070"depends_on:- apollo-configservice- apollo-adminserviceenvironment:- APOLLO_PORTAL_AUTH_ENABLED=true- APOLLO_PORTAL_AUTH_TYPE=database- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=123456- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver- APOLLO_PORTAL_ENVS=dev- DEV_META=http://apollo-configservice:8080- EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://apollo-configservice:8080/eureka/- EUREKA_INSTANCE_PREFER_IP_ADDRESS=truehealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8070/health"]interval: 30stimeout: 10sretries: 5mysql:image: mysql/mysql-server:8.0.26container_name: mysql_apollonetworks:- apollo-networkenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: ApolloConfigDB,ApolloPortalDBvolumes:- ./mysql-data:/var/lib/mysql- ./sql/:/docker-entrypoint-initdb.dports:- "3310:3306"healthcheck:test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]interval: 10stimeout: 5sretries: 10volumes:mysql-data:networks:apollo-network:driver: bridge
- 启动后修改ApolloConfigDB.ServerConfig表的eureka.service.url=http://172.31.0.3:8080/eureka/**
- 注意:由于我这里是使用docker部署的,所以需要作如下修改:
修改前:eureka.service.url: http://localhost:8080/eureka/
修改后:eureka.service.url: http://172.31.0.3:8080/eureka/
注意:- 这里的 172.31.0.3 是 apollo-configservice 容器的ip地址- 此ip地址使用 docker inspect apollo-configservice 命令查询获取,"IPAddress"选项值
- 访问http://宿主机IP:20003/
- 账号/密码:apollo/apollo23





- 账号/密码:apollo/apollo23
二、创建本地SpringBoot3.3.4示例项目
- pom文件:
<properties><java.version>17</java.version><spring-boot.version>3.3.4</spring-boot.version><apollo.version>2.3.0</apollo.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Apollo 客户端 --><dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>${apollo.version}</version></dependency></dependencies>
- application.yml
server:port: 8081spring:application:name: apolloapp:id: demo-2026
apollo:meta: http://宿主机IP:20001bootstrap:enabled: trueeagerLoad:enabled: truenamespaces: applicationaccess-key:# 下一步中的访问密钥secret: xxx
-
密钥
- 注意:点击管理密钥后,密钥需启用


- 注意:点击管理密钥后,密钥需启用
-
启动类
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;// @EnableApolloConfig("apollo.yml") // 指定创建的Namespace(如果没有新创建Namespace,可不设置)
@SpringBootApplication
public class ApolloApplication {public static void main(String[] args) {SpringApplication.run(ApolloApplication.class, args);}
}
- 访问层
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Value("${test-config:apollo}")private String appName;@GetMapping("/hello")public String hello() {return "Hello from " + appName;}
}
三、验证
- 浏览器访问:http://localhost:8081/hello

- 修改apollo中配置值

- 再次访问

代码示例:https://gitee.com/hyb_repository/demo-2026
