docker-compose:在 cron 作业中转储 postgres 数据库不起作用

docker-compose: dumping postgres database in a cron job not working

我写了一个脚本来从主机转储数据库:

#!/bin/bash
cd /mydir/
echo "Dumping database .."
/usr/local/bin/docker-compose exec pg-service pg_dump -U pg -d "MYDB" -f /var/lib/postgresql/dbback_ 2>&1 | tee -a /backup/backup.log
date=`date +%F_%Hh_%Mm`
mv pg_data/dbback_ /backup/dbback_$date.sql
cd /backup/
echo "compressing backup .."
tar -czvf dbback_$date.tar.gz  dbback_$date.sql
rm dbback_$date.sql

/var/lib/postgresql/ 暴露在 MYDIR/pg_data/

当 运行 脚本手动完成任务时,它完美地完成了任务,但是当我为脚本创建一个 cron 作业时,它会创建一个空的 tar.gz 文件(docker-compose 命令失败)

50 22 * * * root /backup/backup.sh

有什么建议!

我使用 docker 而不是 docker-compose 并通过指定容器名称|id 解决了这个问题。

/usr/bin/docker exec -u root CONTAINER-NAME pg_dump -v -Fc -U pg -d "MY-DATABASE" -f /var/lib/postgresql/MYDB_BACKUP.dump