“运行”;docker run“;来自crontab
我尝试从docker容器中运行的postgresql数据库进行自动备份(每晚4点)“运行”;docker run“;来自crontab,cron,docker,Cron,Docker,我尝试从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 "PGPASSWOR
#!/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执行(我尝试了*****进行调试)
我不知道如何让cron和脚本一起工作。到目前为止,我试过:
- 将变量写入日志文件
- 检查crontab的输出(
)***[…]&>cron.log
- 检查脚本中的
docker exec[…]>output.log的输出
$CONTAINER
从cron运行时包含正确的docker id,创建了cron.log和output.log,但为空
有什么想法吗?从cron运行时不能使用
docker-run-it--link[…]
,我现在使用docker-run--link[…]
。要详细说明马丁的答案,-it
是-I-t
的简写,即在终端(伪TTY)上交互运行,因此,在cronjob中运行它是不必要的
如果该命令适用于自动化,-it
应该不是必需的,因此删除它应该可以让您从cron作业中运行docker