docker下 安装 apollo

2020-03-16  本文已影响0人  smallcui

官网下载sql ,创建ApolloConfigDB,ApolloPortalDB数据库

https://github.com/ctripcorp/apollo/tree/master/scripts/sql

创建容器

docker run -d  --name apollo     -p 8090:8090     -p  8080:8080  -p 8070:8070   nobodyiam/apollo-quick-start:latest

起不起来, 修改demo.sh

下载demo.sh

 docker cp  apollo:/apollo-quick-start/demo.sh  . 
 

修改成对应的数据源,密码当中不要有一些特殊的符号,比如&,坑很大

apollo_config_db_url=jdbc:mysql://10.8.0.5:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://10.8.0.5:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=

修改注册的eureka的ip,否则会已docker的ip注册

增加ip -Deureka.instance.ip-address=10.8.0.1


SERVER_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.ip-address=10.8.0.1"

启动apollo

上传demo.sh ,启动

 docker cp demo.sh  apollo:/apollo-quick-start/
 docker restart apollo 

使用一些坑

将org.springframework.boot:spring-boot-devtools这样的依赖,去掉,否则apollo一有改动,就重启

一些有用的case

https://github.com/ctripcorp/apollo-use-cases

动态开始日志级别

在apolo 创建 logging.level=debug

java 客户端

package com.cc.config;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;

import java.util.Set;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.stereotype.Service;

/**
 * Created by kl on 2018/6/25. Content :动态日志配置
 */
@Service
public class LoggerConfiguration {
    private static final Logger logger = LoggerFactory.getLogger(LoggerConfiguration.class);
    private static final String LOGGER_TAG = "logging.level";

    @Resource
    private LoggingSystem loggingSystem;

    @ApolloConfig
    private Config config;

    @ApolloConfigChangeListener
    private void onChange(ConfigChangeEvent changeEvent) {
        refreshLoggingLevels();
    }

    @PostConstruct
    private void refreshLoggingLevels() {
        Set<String> keyNames = config.getPropertyNames();
        for (String key : keyNames) {
            if (LOGGER_TAG.equalsIgnoreCase(key)) {
                String strLevel = config.getProperty(key, "info");
                LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
                loggingSystem.setLogLevel(key.replace(LOGGER_TAG, ""), level);
                logger.info("日志级别:{}->改为了:{}", key, strLevel);
            }
        }
    }

}


上一篇下一篇

猜你喜欢

热点阅读