我有一个用于Django项目的Docker容器(带有postgres数据库),我创建了一个小脚本,以便每24小时进行一次自动备份。 在我的cron文件中,我有以下内容:
SHELL=/bin/bash
* * * * * whoami &>>/tmp/dbg.log
* * * * * cd /home/projects/my-project/ && . env/bin/activate && scripts/sh/auto_backup.sh &>>/tmp/cron_debug.log
修改
正在运行的脚本(auto_backup)如下所示:
#!/bin/bash
today=$(date +"%d_%m_%Y")
./manage.py dumpdata --indent=4 > backups/backup_${today}.json && echo "Backup complete"
完成修改
如果我自己运行cron命令,一切正常。但如果我让cron这样做,我总会得到以下错误:
CommandError: Unable to serialize database: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我在Docker容器中运行它,在我的本地机器上运行顺畅。 postgres数据库确实位于另一个pod(在另一个容器中),但是当我手动运行该命令时,这似乎不是问题。此外,我检查了,whoami
总是返回root,所以它似乎不是权限问题。