2015-08-01 8 views
5

Provo a rendere i backup automatici (ogni notte su 4) da un database postgresql in esecuzione all'interno di un container.eseguire "docker run" da crontab

#!/bin/sh 

CONTAINER=`docker ps|grep name_of_container|awk '{print $1}'` 
USER='postgre_user' 
PASSWORD='changed' 
BUDIR='/some/path/backup/' 

docker run -it --link $CONTAINER:db -v $BUDIR:/backup/ -e "PGPASSWORD=$PASSWORD" pg_dump -h db -U $USER -Fc -f /backup/$(date +%Y-%m-%d-%H-%M-%S).dump 

mio crontab si presenta così:

0 4 * * * /path/to/script.sh 

Lo script funziona bene quando eseguo manualmente e anche vengono eseguiti da cron (ho provato * * * * * per il debug).

Non riesco a capire come far funzionare cron e lo script. Finora ho provato:

  • variabili di scrittura a file di log
  • uscita di spunta dalla crontab (* * * * * [...] &>cron.log)
  • uscita di spunta dalla docker exec [...] > output.log nello script

$CONTAINER contiene la corretta finestra mobile id quando viene eseguito da cron, cron.log e output.log sono creati ma vuoti.

Qualche idea?

risposta

4

Impossibile usare docker run -it --link [...] quando si esegue da cron - Io uso docker run --link [...] ora.