Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker部署apollo

docker部署apollo

原创
作者头像
阿彬学java
发布于 2025-01-24 06:29:33
发布于 2025-01-24 06:29:33
930
举报
文章被收录于专栏:dockerdocker

1. 拉取镜像

代码语言:bash
AI代码解释
复制
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest

2. 创建sql目录,将以下三个文件放入此目录下

  • 注意:前2个文件由于内容过大,故放置链接
  • apolloconfigdb.sql(下载链接)
  • apolloportaldb.sql(下载链接)
  • init-user.sql
代码语言:sql
AI代码解释
复制
-- 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文件

代码语言:yaml
AI代码解释
复制
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部署的,所以需要作如下修改:
代码语言:sql
AI代码解释
复制
修改前: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引入依赖

代码语言:bash
AI代码解释
复制
<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配置文件

代码语言:yaml
AI代码解释
复制
app:
  id: apollo
apollo:
  meta: http://localhost:8080
server:
  port: 8081

5.3 SpringBoot启动参数增加

代码语言:bash
AI代码解释
复制
-Dapollo.configService=http://localhost:8080 -Denv=DEV 
  • 配置步骤:
    • 第一步:
  • 第二步:

5.4 启动类增加@EnableApolloConfig注解

代码语言:java
AI代码解释
复制
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 编写测试代码

代码语言:java
AI代码解释
复制
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 发布配置项

  • 注意:如不发布配置项,则应用程序无法感知到

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Apollo——docker-compose运行Apollo
思索
2024/08/16
1210
Apollo——docker-compose运行Apollo
基于Docker 5分钟搭建携程Apollo分布式配置中心
由于一开始对Apollo的架构方式了解的不够升入,同时为了能够使得安装过程更加的简单,做到一条指令实现Apollo环境的搭建,经历了比较多的测试;本文基于apollo 1.6.0的版本进行编译打包的,后面会将整个镜像的创建过程逐一的列举出来,避免想了解的朋友再次花时间去研究;
一行Java
2022/04/06
2.1K0
基于Docker 5分钟搭建携程Apollo分布式配置中心
Apollo 配置中心的部署与使用经验
准备好 compose.yml 及 。/initsql/初始化脚本,修改其中的 IP
易墨
2023/11/01
2.9K0
Apollo 配置中心的部署与使用经验
Apollo配置中心部署到Docker
使用apollo最新的1.1版本:https://github.com/ctripcorp/apollo docker部署时候会遇到注册中心ip的问题,解决如下2种方法: 1.直接指定要注册的IP,可以修改startup.sh,通过JVM System Property在运行时传入,如-Deureka.instance.ip-address=${指定的IP},或者也可以修改apollo-adminservice或apollo-configservice 的bootstrap.yml文件,加入以下配置
似水的流年
2019/12/07
2.8K0
携程Apollo集群环境手摸手搭建教程
携程的Apollo是一款很优秀的配置中心框架;该框架与SpringCloud整合并使用是非常简单的;详细的使用请参考上篇,本文就主要来讲解其设计的原理和比较麻烦的环境搭建;
一行Java
2022/04/07
1.2K0
携程Apollo集群环境手摸手搭建教程
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候,每一步都踩着坑过来的。因此写文档与需要的朋友分享。
陈珙
2018/09/12
7150
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
在CentOS8下分布式部署Apollo配置中心
众所周知Apollo是携程开源的配置中心,所以中文文档也比较完善,因此这里就不过多赘述细节了。本文的主要目的是记录下如何在CentOS8下分布式部署Apollo配置中心。Apollo的功能亮点:
端碗吹水
2020/11/12
1.7K0
在CentOS8下分布式部署Apollo配置中心
云计算运维kubernetes集群里集成Apollo配置中心
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
王先森sec
2023/04/24
1.4K0
云计算运维kubernetes集群里集成Apollo配置中心
CentOS7安装部署Apollo分布式配置管理系统
1.先在windows中下载完源码包之后,通过ftp工具上传到linux目录中(推荐,下载速度可能稍微快点) 2.直接在linux里面通过wget命令下载到目录里
黎明大大
2020/09/08
3K0
CentOS7安装部署Apollo分布式配置管理系统
apollo部署
本文档介绍了如何按照分布式部署的方式编译、打包、部署Apollo配置中心,从而可以在开发、测试、生产等环境分别部署运行。
章工运维
2023/05/19
2.2K0
分布式配置中心之Apollo简易环境部署
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 github地址为: https://github.com/ctripcorp/apollo 该项目提供了两种部署方式:本地部署和分布式部署。生产环境建议使用“分布式部署”。 因最近项目有使用配置中心的需求,在综合分析了apollo、Qconf、SpringCloud Config等一系列分布式配置中心后,初步选定apollo。 官方提供的分布式部署架构适合大规模集群环境。在其总体架构基础上做了精简,力求先跑起来,给开发部门提供环境,测试。
lyb-geek
2018/07/26
1.5K0
分布式配置中心之Apollo简易环境部署
Apollo配置中心源码编译及搭建
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。目前从官网看Apollo提供了Java和.Net的客户端接入sdk。
BUG弄潮儿
2020/08/04
9530
Apollo配置中心源码编译及搭建
Apollo 源码解析 —— 调试环境搭建
通过各种 MySQL 客户端导入 sql/apolloportaldb.sql 脚本。例如笔者喜欢用 Navicat 。
芋道源码
2020/05/19
4860
Apollo源码解析-搭建调试环境
从官方仓库 https://github.com/ctripcorp/apollo Fork 出属于自己的仓库 https://github.com/wupeixuan/apollo。
武培轩
2019/09/19
1.4K0
Apollo源码解析-搭建调试环境
使用Apollo做配置中心
由于Apollo支持的图形化界面相对于我们更加的友好,所以此次我们使用Apollo来做配置中心
Java学习录
2019/04/18
1.5K0
使用Apollo做配置中心
Apollo配置中心,配置也可以“智能”
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
java技术爱好者
2020/10/30
2.5K0
Apollo配置中心,配置也可以“智能”
微服务之SpringCloud架构第六篇(上)——配置中心(Apollo)
引入配置中心,需要考虑和现有项目的兼容性,以及是否引入额外的第三方组件。我们的java项目以SpringBoot为主,需要重点关注springboot支持性。
leehao
2025/02/11
2630
微服务之SpringCloud架构第六篇(上)——配置中心(Apollo)
芋道 Apollo 极简入门
本小节,参考《Apollo 部署文档 —— 分布式部署指南》和《Apollo 部署文档 —— Quick Start》文章,我们来单机部署一个 Apollo 服务。如下图所示:
芋道源码
2020/05/16
1.4K0
apollo-1:apollo配置中心单机模拟分布式部署--Step by Step
1.随着微服务和容器化大行起到,配置中心的重要性越来越高,携程的apollo(几月eureka)是其中的佼佼者。
千里行走
2019/07/03
7590
docker-10:本地docker部署apollo配置中心
git clone https://github.com/apolloconfig/apollo.git
千里行走
2022/04/06
1.3K0
docker-10:本地docker部署apollo配置中心
相关推荐
Apollo——docker-compose运行Apollo
更多 >
LV.2
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档