2017-09-26 4 views
1

도커 컨테이너로 실행해야하는 kafka 연결 jar가 있습니다. 컨테이너 (나중에 디렉토리/파일 -/etc/kafka/kafka-connect-logs)의 로그 파일에 모든 연결 로그를 캡처해야합니다.이 로그는 나중에 docker 엔진이 실행중인 localhost로 푸시 될 수 있습니다. 도커의 양. 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를 사용하여 (콘솔에 로그를 추가) 만 만들 수 없습니다 생각하고 때 잘 작동합니다 도커에있는 로그 파일. 또한 docker가없는 동일한 프로세스가 로컬 VM에 잘 작동합니다 (로그 파일 생성). 토론의

+1

볼륨을 바로 선언하고 파일을 볼륨 폴더에 직접 넣어 봤습니까? 도커 파일의 VOLUME/etc/kafka와 같은 파일을 만든 다음이 파일을 도커에서 실행합니다. – hecko84

+0

감사합니다! 이것은 도움이 :-) –

+0

나는 대답을뿐만 아니라 결과를 배치, 아래 참조 – hecko84

답변

1

결과 :

이 바로 dockerfile의 볼륨을 선언하고 볼륨에 직접 로그 출력을 배치 할 로깅 설정을 구성합니다. 도커에서 (또는 컨테이너를 시작할 때) 볼륨을 마운트하면 문제가 없습니다.

관련 문제