从crontab运行“docker run”
我尝试从docker容器内运行的postgresql数据库中自动备份(每天晚上4次)。
#!/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
我的crontab看起来像这样:
0 4 * * * /path/to/script.sh
该脚本工作正常,当我手动执行它也得到执行从cron(我试过* * * * *为debugging)。
我无法弄清楚如何使cron和脚本一起工作。 到目前为止我尝试过:
- 将variables写入日志文件
- 检查crontab的输出(
* * * * * [...] &>cron.log
) - 在脚本中检查
docker exec [...] > output.log
outputdocker exec [...] > output.log
输出
当从cron运行时, $CONTAINER
包含正确的docker id,cron.log和output.log被创build,但是是空的。
有任何想法吗?
从cron运行时不能使用docker run -it --link [...]
– 我现在使用docker run --link [...]
。