我尝试从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
Run Code Online (Sandbox Code Playgroud)
我的crontab看起来像这样:
0 4 * * * /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
当我手动执行它时脚本工作正常,它也从cron执行(我试过*****进行调试).
我无法弄清楚如何让cron和脚本一起工作.到目前为止我试过:
* * * * * [...] &>cron.log)的输出docker exec [...] > output.log脚本中的输出$CONTAINER 包含从cron运行时正确的docker id,cron.log和output.log已创建但为空.
有任何想法吗?
mah*_*off 10
详细说明 Martin 的答案,-it是 的简写-i -t,即在终端(伪 TTY)上交互运行,因此不需要在 cronjob 中运行。
如果该命令适用于自动化,-it则不需要,因此删除它应该可以让您从 cron 作业中运行 docker。
Can't use docker run -it --link [...] when running from cron - I use docker run --link [...] now.
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |