栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【docker】apollo配置中心启动优化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【docker】apollo配置中心启动优化

问题引出

在apollo官方提供的docker-compose.yml文件中可以发现,启动的同时也会生成一个数据库容器,但我们可能已经拥有一个数据库了,想直接使用已经拥有的数据库作为apollo-config的数据源应该怎么操作呢?https://www.apolloconfig.com/#/zh/deployment/quick-start

准备

我们以apollo-quickstart的方式在容器内部执行,那么先需要下载quickstart源文件。下载apollo quickstart源文件

数据库配置

这里不做过多赘述,按照官方操作即可。apollo数据库配置官方流程

修改demo.sh文件

在官方的流程里是写死定好的,为了方便我们的使用,我们采用可配置的方式实现镜像打包。
找到demo.sh中配置代码块,修改成如下:

# apollo config db info
apollo_config_db_url="jdbc:mysql://${APOLLO_MYSQL_HOST}:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=${APOLLO_MYSQL_USERNAME:-root}
apollo_config_db_password=${APOLLO_MYSQL_PASSWORD:-}

# apollo portal db info
apollo_portal_db_url="jdbc:mysql://${APOLLO_MYSQL_HOST}:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=${APOLLO_MYSQL_USERNAME:-root}
apollo_portal_db_password=${APOLLO_MYSQL_PASSWORD:-}

变量解释:

  • APOLLO_MYSQL_HOST: 因为我们使用容器部署,所以这里不能使用localhost去使用宿主机公网IP代替。
  • APOLLO_MYSQL_USERNAME: apollo config,portal 数据库的用户名,在我这里都统一使用统一数据源,所以简化配置替换成了一个变量,如果有拆分数据源的需求可以再更改变量名。
  • APOLLO_MYSQL_PASSWORD: apollo config,portal 数据库的密码
编写Dockerfile文件
FROM openjdk:8-jre-alpine

COPY apollo-all-in-one.jar /apollo-quick-start/apollo-all-in-one.jar
COPY client /apollo-quick-start/client
COPY demo.sh /apollo-quick-start/demo.sh
COPY portal/apollo-portal.conf /apollo-quick-start/portal/apollo-portal.conf
COPY service/apollo-service.conf /apollo-quick-start/service/apollo-service.conf

EXPOSE 8070 8080

RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories 
    && echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories 
    && apk update upgrade 
    && apk add --no-cache curl bash 
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    && echo "Asia/Shanghai" > /etc/timezone 
    && sed -i'.bak' '/db_url/s/localhost/apollo-db/g' /apollo-quick-start/demo.sh 
    && sed -i "s/exit 0;/tail -f /dev/null/g" /apollo-quick-start/demo.sh

CMD ["/apollo-quick-start/demo.sh", "start"]
构建镜像
docker build -t birdyson/apollo-config:2.0.1 .
启动容器
version: "2"
services:
  apollo-config:
    image: birdyson/apollo-config:2.0.1 # 我已将镜像推送至docker仓库,大家可以省略上述步骤直接使用
    container_name: apollo-config
    environment:
    - APOLLO_MYSQL_HOST=你的公网IP
    - APOLLO_MYSQL_USERNAME=root
    - APOLLO_MYSQL_PASSWORD=你的数据库密码
    ports:
    - "7080:8080" # 这里我为了防止占用常用端口,将端口映射在宿主机的7080端口之上
    - "7090:8090"
    - "7070:8070"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号