docker compose exeC语言 T在cron中不起作用



我有一个crontab来执行每天的DB备份。DB是docker组合的一部分,所以我在cron脚本中运行这个命令:

cd /home/ubuntu/my_project/ 
&& /usr/bin/docker compose exec -T db pg_dump -U postgres > $BACKUP_FILE

这个命令在使用unknown shorthand flag : 'T' in -T时失败,尽管它在我的终端上运行得很好。

我已经指定了路径到docker的其他SO答案已经建议,但我不明白为什么docker是抱怨从cron执行。此外,我在互联网上找到的所有其他资源都使用docker-compose而不是docker compose,所以我也没有从那里得到帮助。

我还确认了来自cron的PATH变量与我的正常终端相同。

* * * * * echo $PATH > tmp.txt 2&>1
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

虽然我不能理解这个问题的根本原因,但我的问题的最快解决方案是

  • 安装docker-compose
  • docker-compose替换docker compose命令

在此之后,我能够运行脚本从cron没有任何其他更改。

我怀疑这是由于docker compose是一个较新的功能,正如Zac指出的那样,但我还没有对此做任何进一步的调查。

最新更新