docker-compose with crontab

use*_*457 5 crontab docker-compose

我想在crontab中执行docker-compose命令时遇到问题.

我有一个docker-compose YAML文件,它定义了我需要的所有服务,比如说"docker-compose.yml".而且我还有一个Makefile,我在其中写了一些命令来做某事.

我的makefile是:

.PHONY operate
operate:
    /usr/local/bin/docker-compose -p /project -f ~/docker-compose-production.yml run rails env
Run Code Online (Sandbox Code Playgroud)

这个make脚本在shell中执行时运行正常.它列出了我在docker-compose.yml中定义的所有环境变量.但是当我把它放在crontab中时.结果变得奇怪,它只列出了$PATH.

我的crontab文件是:

57 21 * * * make -f ~/Makefile operate  >~/temp 2>&1
Run Code Online (Sandbox Code Playgroud)

我想必须有一些docker-compose必须拥有的环境变量,但我不知道.你对这个问题有什么看法吗?

lan*_*321 14

您可以使用

10 3 * * 0 /usr/local/bin/docker-compose -f /www/ilanni.com/docker-compose.yml start > /dev/null
Run Code Online (Sandbox Code Playgroud)


Zig*_*obs 7

我在脚本内使用 docker-compose exec 命令的 bash 脚本遇到问题,这可能与该问题有关。

\n

当从终端启动脚本时,脚本运行良好,但当脚本由 CRON 启动时,它返回错误代码。

\n

我通过在 bash 脚本中的 docker-compose exec 之后添加 -T 解决了这个问题:

\n

docker-compose exec -T

\n

\xe2\x80\x93T 禁用伪 tty 分配。默认情况下 docker-compose exec 分配一个 TTY。

\n


Eli*_*jah 2

您不需要任何尚未用于 Docker 的环境变量来驱动 Docker Compost。除非您连接到远程 Docker 主机,否则其中大部分都是不需要的。

我怀疑 cron 正在以具有不同权限集的不同用户身份执行,而该用户无权访问 Docker 套接字。也许您可以在 Makefile 中添加一行来调试它。您可以使用“whoami”命令输出当前用户的名称。

  • 我尝试在 crontab 中使用“whami”。用户与我在 shell 中使用的用户相同,用户是“root”。因此该脚本获得了完成该工作所需的所有权限。 (2认同)