1. 拉取鏡像
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest
2. 創(chuàng)建sql目錄,將以下三個文件放入此目錄下
-- init-user.sql
use mysql;
update user set host = '%' where user = 'root';
alter user 'root'@'%' identified with mysql_native_password by '123456';
alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;
-- init-user.sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3. 編寫docker-compose.yml文件
version: '3'
services:
apollo-configservice:
image: apolloconfig/apollo-configservice:latest
networks:
- apollo-network
ports:
- "8080: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
depends_on:
- mysql
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 15
apollo-adminservice:
image: apolloconfig/apollo-adminservice:latest
networks:
- apollo-network
ports:
- "8090:8090"
depends_on:
- apollo-configservice
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-adminservice:8090/eureka/
- EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/health"]
interval: 30s
timeout: 10s
retries: 15
restart: always
apollo-portal:
image: apolloconfig/apollo-portal:latest
networks:
- apollo-network
ports:
- "8070:8070"
depends_on:
- apollo-configservice
- apollo-adminservice
environment:
- SPRING_PROFILES_ACTIVE=dev
- 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=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8070/health"]
interval: 30s
timeout: 10s
retries: 5
mysql:
image: mysql/mysql-server:8.0.26
container_name: mysql_apollo
networks:
- apollo-network
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: ApolloConfigDB,ApolloPortalDB
volumes:
- mysql-data:/var/lib/mysql
- ./sql/:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
volumes:
mysql-data:
networks:
apollo-network:
driver: bridge
4. 修改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"選項值
5. 與SpringBoot集成
5.1 maven引入依賴
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
5.2 application.yml配置文件
app:
id: apollo
apollo:
meta: http://localhost:8080
server:
port: 8081
5.3 SpringBoot啟動參數增加
-Dapollo.configService=http://localhost:8080 -Denv=DEV
-
配置步驟:
-
第一步:
步驟1.png
-
第二步:
步驟2.png
5.4 啟動類增加@EnableApolloConfig注解
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableApolloConfig
@SpringBootApplication
public class ApolloApplication {
public static void main(String[] args) {
SpringApplication.run(ApolloApplication.class, args);
}
}
5.5 編寫測試代碼
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Value("${test-config}")
private String someConfigValue;
@GetMapping("/config")
public String getConfig() {
return someConfigValue;
}
}
5.6 瀏覽器輸入 http://localhost:8081/config 地址
配置3.png
6. apollo配置中心配置步驟
6.1 瀏覽器地址欄輸入 http://localhost:8070/
6.2 增加應用
配置4.png
配置5-1.png
6.3 添加配置項
配置6.png
配置7.png
6.4 發(fā)布配置項
- 注意:如不發(fā)布配置項钮热,則應用程序無法感知到
配置8.png