$ python modulo_7.py
Agendamento e deploy
Rodar scripts automaticamente todos os dias e colocar em produção com Docker. Do cron clássico ao container isolado.
O que você vai aprender
- Agendar com cron (Linux) e schedule (Python)
- Logs rotativos e notificação de falha
- Dockerfile mínimo para automações
- docker-compose e volumes
- Checklist de produção (env, secrets, health)
1. Cron clássico
# editar crontab
crontab -e
# todo dia às 6h
0 6 * * * /home/user/proj/.venv/bin/python /home/user/proj/job.py >> /var/log/job.log 2>&1
# a cada 15 minutos
*/15 * * * * /path/to/python /path/to/script.py
2. schedule em Python
import schedule
import time
def job():
print("Executando job...")
schedule.every().day.at("06:00").do(job)
schedule.every(15).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
3. Dockerfile para automação
Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "job.py"]
docker build -t irn-job .
docker run --rm -v $(pwd)/dados:/app/dados --env-file .env irn-job
4. docker-compose
version: "3.8"
services:
job:
build: .
env_file: .env
volumes:
- ./dados:/app/dados
- ./logs:/app/logs
restart: unless-stopped
SECRETS
Nunca coloque senhas no código ou no Dockerfile. Use .env (e não faça commit dele) ou secrets do orquestrador.
EXERCÍCIO
1. Agende o scraper do módulo 2 para rodar diariamente via cron.
2. Containerize o script e rode com volume para persistir o JSON.
3. Adicione envio de e-mail em caso de exceção não tratada.
2. Containerize o script e rode com volume para persistir o JSON.
3. Adicione envio de e-mail em caso de exceção não tratada.