2017-09-26 6 views
1

私はドッカーコンテナとして実行する必要があるカフカ接続ジャーを持っています。私は、後でローカルホスト(ドッキングエンジンが動作している)にプッシュできるコンテナ内のログファイル(すべてのディレクトリ/ファイル -/etc/kafka/kafka-connect-logs)にすべての接続ログをキャプチャする必要があります。ドッカーのボリューム。 connect-log4j.propertiesを変更してログファイルに追加すると、ログファイルが作成されないことがわかります。私がドッカーなしで同じことを試して、ログファイルにログを書き込むようにconnect-log4j.propertiesを変更してローカルのLinux VMでkafka接続を実行すると、完全には動作しますが、ドッカーからは動作しません。どんな提案も非常に役に立ちます。Kafka-connectはドッカーコンテナにログインします

Docker File

FROM confluent/platform 

COPY Test.jar /usr/local/bin/ 
COPY kafka-connect-docker.sh /usr/local/bin/ 
COPY connect-distributed.properties /usr/local/bin/ 
COPY connect-log4j.properties /etc/kafka/connect-log4j.properties 

RUN ["apt-get", "update"] 
RUN ["apt-get", "install", "-yq", "curl"] 
RUN ["chown", "-R", "confluent:confluent", "/usr/local/bin/kafka-connect-docker.sh", "/usr/local/bin/connect-distributed.properties", "/usr/local/bin/Test.jar"] 
RUN ["chmod", "+x", "/usr/local/bin/kafka-connect-docker.sh", "/usr/local/bin/connect-distributed.properties", "/usr/local/bin/Test.jar"] 
RUN ["chown", "-R", "confluent:confluent", "/etc/kafka/connect-log4j.properties"] 
RUN ["chmod", "777", "/usr/local/bin/kafka-connect-docker.sh", "/etc/kafka/connect-log4j.properties"] 

EXPOSE 8083 

CMD [ "/usr/local/bin/kafka-connect-docker.sh" ] 

connect-log4j.properties

# Root logger option 
log4j.rootLogger = INFO, FILE 

# Direct log messages to stdout 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=/etc/kafka/log.out 
# Define the layout for file appender 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.conversionPattern=%m% 

log4j.logger.org.apache.zookeeper=ERROR 
log4j.logger.org.I0Itec.zkclient=ERROR 

kafka-connect-docker.sh

#!/bin/bash 
export CLASSPATH=/usr/local/bin/Test.jar 
exec /usr/bin/connect-distributed /usr/local/bin/connect-distributed.properties 

それは私がデフォルトconnect-log4j.propertiesを使用していたときに(コンソールにログを追加)正常に動作しますが、作成することができませんドッカーのログファイル。また、ドッカーを使用しない同じプロセスは、ローカルVM内で正常に動作します(ログファイルを作成します)。議論の

+1

ボリュームをすぐに宣言して、そのファイルを直接ボリュームフォルダに配置しようとしましたか?あなたのドッカーファイルのVOLUME/etc/kafkaのようなものを、そしてドッカーがこのボリュームのマッピングを実行していますか? – hecko84

+0

ありがとうございます!これは助けてくれました:-) –

+0

私は答えとしても結果を出しました、下記を参照してください – hecko84

答えて

1

結果:

すぐdockerfileでボリュームを宣言し、ボリュームに直接ログ出力を配置するために、あなたのログ構成を設定します。ドッカーを走らせて(またはコンテナを起動して)ボリュームをマウントしてください。

関連する問題