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)
我在脚本内使用 docker-compose exec 命令的 bash 脚本遇到问题,这可能与该问题有关。
\n当从终端启动脚本时,脚本运行良好,但当脚本由 CRON 启动时,它返回错误代码。
\n我通过在 bash 脚本中的 docker-compose exec 之后添加 -T 解决了这个问题:
\ndocker-compose exec -T
\xe2\x80\x93T 禁用伪 tty 分配。默认情况下 docker-compose exec 分配一个 TTY。
\n您不需要任何尚未用于 Docker 的环境变量来驱动 Docker Compost。除非您连接到远程 Docker 主机,否则其中大部分都是不需要的。
我怀疑 cron 正在以具有不同权限集的不同用户身份执行,而该用户无权访问 Docker 套接字。也许您可以在 Makefile 中添加一行来调试它。您可以使用“whoami”命令输出当前用户的名称。
| 归档时间: |
|
| 查看次数: |
6760 次 |
| 最近记录: |