Il progetto
Tramite Docker creiamo il container per rendere concreta e portatile l’applicazione, di seguito vi riporto il codice di configurazione del file cron_Setup.Dockerfile
:
FROM alpine:3.15 RUN apk add --update --no-cache bash dos2unix WORKDIR /usr/scheduler COPY crontab.* ./ COPY start.sh . RUN dos2unix crontab.* && \ find . -type f -iname "*.sh" -exec chmod +x {} \; CMD ["./start.sh"]
Scriviamo ora lo script start.sh
che si occuperà di caricare il giusto crontab da eseguire, per l’esempio creeremo un ambiente di prova chiamato Dev
:
#!/bin/bash if [ -z "$ENVIRONMENT" ]; then echo "ENVIRONMENT not set, using Dev" ENVIRONMENT="Dev" fi CRON_FILE="crontab.$ENVIRONMENT" echo "Loading crontab file: $CRON_FILE" crontab $CRON_FILE echo "Starting cron..." crond -f
Come potete vedere dal codice, lo script caricherà il file crontab.Dev
contenente la cron expression che ho scritto all’inizio dell’articolo, ovvero:
* * * * * echo 'Saluti da Intré'
Non rimane che fare la build ed eseguire l’immagine Docker:
docker build -f cron_setup.Dockerfile . -t cron docker run cron
A video noterete la scritta Saluti da Intré
stampata di continuo, finché non verrà interrotta l’esecuzione.