【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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

edanhuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值