【问题标题】:How to run "docker-compose up" command in .sh file?如何在 .sh 文件中运行“docker-compose up”命令?
【发布时间】:2017-08-08 20:58:53
【问题描述】:

我每天都在尝试使用 cron 作业运行 Docker 容器。

* * * * * /Desktop/cron1.sh

这是我的 cron1.sh 文件:

#!/bin/sh
mkdir /home/tomato/bizzz    #working
cd bizzz             #not working
docker-compose up      #not working

【问题讨论】:

  • 即使在cron 之外运行脚本也会失败吗?
  • 尝试将-d 添加到docker-compose 命令?我不确定您是否可以从 cron 开始(无需分离),那里没有可附加的终端。 cron 是否通过电子邮件向您发送任何错误输出?
  • 如果你不能cd bizzz,但你可以mkdir /home/tomato/bizzz,那么显然你当前的工作目录不是/home/tomato。使用 cron 时要记住的关键事项之一是不要假设您的环境 - 不是您的 PATH,不是您的工作目录等。
  • 无论如何 -- exec 2>/tmp/log; set -x 在您的脚本中,您将在 /tmp/log 登录,这应该可以说明正在发生的事情。
  • (顺便说一句,在未来,不要仅仅将某事描述为“工作”或“不工作”,而是你如何知道某事是否工作。例如:您如何确定cd 不起作用?如果您遇到错误,这可能是一个有用的线索,应该包含在您的问题中)

标签: bash docker cron docker-compose crontab


【解决方案1】:

我看到了一些潜在的问题:

  • 是运行 cron 作业的用户 (/home/tomato) 的主目录吗?如果没有,那么您需要cd /home/tomato/bizzz
  • 您还在创建目录bizzz,然后运行docker-compose up,其中没有任何内容...?
  • 另外,docker-compose 可能不在 cron 的 PATH 中。例如,确保将 PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 添加到 cron 作业的开头的一种方法。

【讨论】:

  • 感谢它对我有用。在我的 'crontab -e' 中添加两行 1.SHELL=/bin/sh 2.PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/ sbin
  • 嘿@nateleavitt,你知道为什么它不能在 EC2 容器上工作吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
相关资源
最近更新 更多