linux 修改docker配置文件,dockerfile动态修改服务配置文件(示例代码)
主要是利用命令envsubst能實(shí)現(xiàn)變量的替換并生成新得配置文件以及docker命令行的變量輸入等。
本次實(shí)驗(yàn)主要是編寫flume鏡像,并在容器啟動(dòng)(docker run)時(shí)動(dòng)態(tài)修改配置文件并啟動(dòng),并向flume發(fā)數(shù)據(jù),然后發(fā)給kafka。
此實(shí)驗(yàn)的基礎(chǔ):
會(huì)dockerfile的編寫,熟悉flume服務(wù),kafka服務(wù)。
步驟:
1、dockerfile文件如下:
FROM centos
WORKDIR/opt
COPY jdk-8u241-linux-x64.rpm /root
RUN rpm-i /root/jdk-8u241-linux-x64.rpm # 安裝jdk
RUNyum install -y gettext # 安裝 envsubst命令
COPY flume ./flume/EXPOSE5140/udp
VOLUME/tmp/logs/CMD envsubst< /opt/flume/conf/flume.conf.template > /opt/flume/conf/flume.conf && ./flume/bin/flume-ng agent -c ./flume/conf/ -f ./flume/conf/flume.conf --name agent -Dflume.root.logger=INFO,console
# envsubst根據(jù)flume.conf.template這個(gè)配置文件替換變量并生成flume.conf。
flume的配置文件如下:
agent.sources = s1
agent.sinks = k1
agent.channels = c1
agent.sources.s1.type = syslogudp
agent.sources.s1.port = 5140
agent.sources.s1.host = ${BIND_IP}
agent.channels.c1.type = memory
agent.channels.c1.capacity = 100000
agent.channels.c1.transactionCapacity = 5000
agent.sinks.k1.type = logger
agent.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.k1.kafka.topic = log
agent.sinks.k1.kafka.bootstrap.servers = ${KAFKA_IP}:${KAFKA_PORT}
agent.sinks.k1.flumeBatchSize = 200
agent.sinks.k1.producer.acks = 1
agent.sinks.k1.producer.linger.ms = 1
agent.sinks.k1.producer.compression.type = snappy
agent.sources.s1.channels = c1
agent.sinks.k1.channel = c1
2、構(gòu)建鏡像
docker build /root/flume/dockerfile/ -t flume_sink_file:v1
注意:/root/flume/dockerfile/目錄下要有flume、jdk-8u241-linux-x64.rpm、dockerfile文件。
3、啟動(dòng)容器:
docker run -d --rm -P -e KAFKA_IP="192.168.174.128",KAFKA_PORT="9092",BIND_IP="0.0.0.0" --name=abcd flume_sink_file:v1
4、而后,向flume發(fā)送數(shù)據(jù),測(cè)試是否能在kafka topic log上接收到數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的linux 修改docker配置文件,dockerfile动态修改服务配置文件(示例代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在iPhone 13主屏幕上显示时间
- 下一篇: 阳光橙+樱花粉的iPhone 14,你爱