Docker镜像制作案例

关于kafka-eagle(EFAK)kafka管理工具实现镜像制作及发布

由于kafka-eagle官方没有提供docker镜像,我们自行构建一个镜像并发布运行。以下是其镜像制作的详细过程。

下载kafka-eagle软件包并上传到centos服务器

ps:本文默认用户已经搭建好了docker的运行环境。

①官网下载地址:Download - EFAK

使用vi编辑器创建镜像脚本Dockerfile

#kafka-eagle的 Dockerfile 镜像脚本
 
#引入依赖的java环境
FROM openjdk:8-alpine3.9
 
#环境变量配置
ENV KE_HOME=/opt/kafka-eagle
 
ENV EAGLE_VERSION=2.1.0
 
CMD ["/bin/bash"]
 
#工作目录
WORKDIR /opt/kafka-eagle
 
#作者信息
MAINTAINER wangchao "zilan1986@163.com"
 
#拷贝压缩包到临时目录
COPY kafka-eagle-bin-${EAGLE_VERSION}.tar.gz  /tmp
 
#将上传的kafka-eagle压缩包解压放入镜像中并授权
RUN mkdir /opt/kafka-eagle -p && cd /opt && \
    tar zxvf /tmp/kafka-eagle-bin-${EAGLE_VERSION}.tar.gz -C kafka-eagle --strip-components 1 && rm -f /tmp/kafka-eagle-bin-${EAGLE_VERSION}.tar.gz && \
    cd kafka-eagle;tar zxvf efak-web-${EAGLE_VERSION}-bin.tar.gz --strip-components 1 && rm -f efak-web-${EAGLE_VERSION}-bin.tar.gz  && \
    chmod +x /opt/kafka-eagle/bin/ke.sh && \
    mkdir -p /hadoop/kafka-eagle/db
 
#将kafka-eagle的启动文件拷贝到镜像中
COPY entrypoint.sh /opt/kafka-eagle/bin
 
#给启动文件授权
RUN chmod +x /opt/kafka-eagle/bin/entrypoint.sh
 
#暴露端口
EXPOSE 8048 8080
 
#镜像的启动命令
CMD ["sh","/opt/kafka-eagle/bin/entrypoint.sh"]

使用vi编辑器创建镜像启动脚本entrypoint.sh

创建entrypoint.sh文件

#!/usr/bin
 
#kafka-eagle项目启动的命令
sh /opt/kafka-eagle/bin/ke.sh start
 
tail -f /dev/null

使用vi编辑器新建kafka-eagle的配置文件system-config.properties

创建kafka-eagle的配置文件system-config.properties

ps:将系统默认的配置文件复制一份修改

配置为kafka所属的的zookeeper集群地址

配置数据库地址

######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
#efak.zk.cluster.alias=cluster1,cluster2
#cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181
#cluster2.zk.list=xdn10:2181,xdn11:2181,xdn12:2181
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.0.219:2181
######################################
# zookeeper enable acl
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123

######################################
# broker size online list
######################################
cluster1.efak.broker.size=20

######################################
# zk client thread limit
######################################
kafka.zk.limit.size=16

######################################
# EFAK webui port
######################################
efak.webui.port=8048

######################################
# EFAK enable distributed
######################################
efak.distributed.enable=false
efak.cluster.mode.status=master
efak.worknode.master.host=localhost
efak.worknode.port=8085

######################################
# kafka jmx acl and ssl authenticate
######################################
cluster1.efak.jmx.acl=false
cluster1.efak.jmx.user=keadmin
cluster1.efak.jmx.password=keadmin123
cluster1.efak.jmx.ssl=false
cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
cluster1.efak.jmx.truststore.password=ke123456

######################################
# kafka offset storage
######################################
cluster1.efak.offset.storage=kafka
cluster2.efak.offset.storage=zk

######################################
# kafka jmx uri
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi

######################################
# kafka metrics, 15 days by default
######################################
efak.metrics.charts=true
efak.metrics.retain=15

######################################
# kafka sql topic records max
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10

######################################
# delete kafka topic token
######################################
efak.topic.token=keadmin

######################################
# kafka sasl authenticate
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=
cluster2.efak.sasl.enable=false
cluster2.efak.sasl.protocol=SASL_PLAINTEXT
cluster2.efak.sasl.mechanism=PLAIN
cluster2.efak.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
cluster2.efak.sasl.client.id=
cluster2.efak.blacklist.topics=
cluster2.efak.sasl.cgroup.enable=false
cluster2.efak.sasl.cgroup.topics=

######################################
# kafka ssl authenticate
######################################
cluster3.efak.ssl.enable=false
cluster3.efak.ssl.protocol=SSL
cluster3.efak.ssl.truststore.location=
cluster3.efak.ssl.truststore.password=
cluster3.efak.ssl.keystore.location=
cluster3.efak.ssl.keystore.password=
cluster3.efak.ssl.key.password=
cluster3.efak.ssl.endpoint.identification.algorithm=https
cluster3.efak.blacklist.topics=
cluster3.efak.ssl.cgroup.enable=false
cluster3.efak.ssl.cgroup.topics=

######################################
# kafka sqlite jdbc driver address
######################################
#efak.driver=org.sqlite.JDBC
#efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#efak.username=root
#efak.password=www.kafka-eagle.org

######################################
# kafka mysql jdbc driver address
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://192.168.0.219:3308/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=123456
  • 打包kafka-eagle镜像

打包命令

docker build -f Dockerfile -t efak:2.1.0 .

 #查看制作好的镜像
 docker images

启动 kafka-eagle容器

docker run --name efak -p 8048:8048 -v /data2/wangchao/kafka-eagle/system-config.properties:/opt/kafka-eagle/conf/system-config.properties -d efak:2.1.0

-p :端口映射

-v :文件映射

-d :后台启动

②验证:访问地址:http://ip:port/ 默认账户密码: admin/123456

密码修改:efak-web-2.1.0-bin.tar.gz\efak-web-2.1.0\bin 目录下:sh或bat文件中内置账户和密码

# 进入efak容器修改 启动脚本更新密码
docker exec -it efak sh

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

仰望星空@脚踏实地

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

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

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

打赏作者

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

抵扣说明:

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

余额充值