docker部署apollo
1. 拉取镜像
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest
2. 创建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
-
配置步骤:
- 第一步:
- 第一步:
-
第二步:
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 地址
6. apollo配置中心配置步骤
6.1 浏览器地址栏输入 http://localhost:8070/
6.2 增加应用
6.3 添加配置项
6.4 发布配置项
- 注意:如不发布配置项,则应用程序无法感知到
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!