You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker compose exec -T在Cron中执行失败,报“unknown shorthand flag: 'T'”错

解决Cron中执行docker compose exec -T报错的问题

问题原因

核心问题是Cron环境中使用的Docker版本不支持docker compose集成式子命令。
docker compose是Docker 20.10.0及以上版本才引入的新语法,将Compose功能直接集成到Docker CLI中。如果Cron调用的Docker版本低于这个阈值,它会把compose当成未知的Docker命令参数,进而将后续的-T识别为非法短选项,最终触发报错。

解决方案

1. 检查并升级Docker版本

先验证Cron环境中的Docker版本:

  • 创建临时Cron任务执行版本检查:
    * * * * * /usr/bin/docker --version > /tmp/docker_version.log 2>&1
    * * * * * /usr/bin/docker compose version > /tmp/docker_compose_version.log 2>&1
    

等待1分钟后查看日志文件,若Docker版本低于20.10.0,或docker compose命令报错,就需要升级Docker到支持集成式Compose的版本。

2. 改用传统docker-compose命令(兼容旧版本)

如果暂时无法升级Docker,可切换到旧版独立的docker-compose命令:
修改备份脚本中的命令为:

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

若系统中没有docker-compose,可通过包管理器安装(比如Ubuntu下执行apt install docker-compose)。

3. 补全脚本环境变量

即使PATH一致,Cron的环境变量仍可能比终端少。可在脚本开头手动指定必要变量,避免隐性错误:

#!/bin/bash
export PATH="/usr/bin:/bin:$PATH"
export BACKUP_FILE="/path/to/your/backup.sql" # 确保备份路径正确定义
cd /home/ubuntu/my_project/ \
  && /usr/bin/docker compose exec -T db pg_dump -U postgres > $BACKUP_FILE

内容的提问来源于stack exchange,提问作者kyuden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:45:37