F………………………………………………………………………………..

https://www.preining.info/blog/2018/05/docker-cron-mail-and-logs/

  
from debian:stretch-slim  
RUN apt-get -y update  
RUN apt-get install -y cron #ssmtp  
ADD . /app  
ADD crontab /etc/cron.d/mypackage  
RUN chmod 0644 /etc/cron.d/mypackage  
#ADD ssmtp.conf /etc/ssmtp/ssmtp.conf  
#RUN chown root.mail /etc/ssmtp/ssmtp.conf  
#RUN chmod 0640 /etc/ssmtp/ssmtp.conf  
CMD cron -f  

=====

docker-compose.yml

  
version: '3.3'  
  
services:  
  gethpeers:  
    build:  
      context: gethpeers/  
    volumes:  
      - cronlog:/app/cronapplog:rw  
    networks:  
      - fastdev  
  
  fakelog:  
    build:  
      context: fakelog/  
    volumes:  
      - cronlog:/app/cronapplog:rw  
      - filebeat:/usr/share/filebeat/data:rw  
    networks:  
      - fastdev  
  
volumes:    
  cronlog:   
  filebeat:  
    
networks:  
  fastdev:  
    driver: bridge  

gethpeers Dockerfile

  
from debian:stretch-slim  
RUN apt-get -y update  
RUN apt-get install -y cron   
#ssmtp  
ADD . /app  
ADD crontab /etc/cron.d/mypackage  
RUN chmod 0644 /etc/cron.d/mypackage  
#ADD ssmtp.conf /etc/ssmtp/ssmtp.conf  
#RUN chown root.mail /etc/ssmtp/ssmtp.conf  
#RUN chmod 0640 /etc/ssmtp/ssmtp.conf  
CMD cron -f  

gethpeers crontab

  
* * * * * root /app/run-cronjob /app/start.sh  

gethpeers run-cronjob

  
#!/bin/bash  
  
if [ -z "$1" ] ; then  
  echo "need name of cron job as first argument" >&2  
  exit 1  
fi  
   
if [ ! -x "$1" ] ; then  
  echo "cron job file $1 not executable, exiting" >&2  
  exit 1  
fi  
   
if "$1"  
then  
  exit 0  
else  
  echo "cron job $1 failed!" 2>/proc/1/fd/2 >&2  
  exit 1  
fi  

gethpeers start.sh

  
#!/bin/bash  
  
IP_PORT=xxx.xxx.xxx.xxx:8545  
ETH_METHOD=admin_peers  
PEERS=$(curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"'$ETH_METHOD'","params":[],"id":1}' $IP_PORT |  jq '.result[].network + {"project":"cronapp"}')  
  
printf "\n===== Now Geth Peers =====\n"  
printf "Peers: %s\n" $PEERS  
echo $PEERS >> /app/cronapplog/gethpeers.log  

fakelog Dockerfile

  
FROM docker.elastic.co/beats/filebeat:6.5.4  
COPY filebeat.yml /usr/share/filebeat/filebeat.yml  
USER root  
RUN chown root:filebeat /usr/share/filebeat/filebeat.yml  
USER filebeat  

fakelog filebeat.yml

  
filebeat.prospectors:  
  
- type: log  
  paths:  
    - /app/cronapplog/gethpeers.log  
  exclude_files: ['.gz$']  
  fields:  
    srcname: "geth"  
    srctype: "cron"  
    filebeatserverip: "xxx.xxx.xxx.xxx"  
  fields_under_root: true  
  symlinks: true  
  
output.logstash:  
  hosts: ["logstash:5044"]