在宿主机上执行docker中的脚本

Python/Go 林涛 1130℃ 0评论

先说一下背景,在服务器上运行着几个docker容器,分别承担着nginx、mysql、go、php、python,具体架构设计初衷暂且不管,有个需求是需要用python脚本去定时采集数据。

宿主机上没有配置python也没有mysql所以只能吧采集任务放在python容器上。问题:如果在python容器内设置计划任务,未免搞的太复杂,容器对计划任务的支持不是太好。所以吧计划任务放在宿主机上更好。

那么问题来了,怎样在宿主机上去执行docker上的脚本?

仔细阅读docker帮助和linux命令说明之后可以大概明白执行过程,直接放脚本:

*/1 * * * * docker exec python /bin/bash -c ‘/bin/bash /www/python/diyikaoshi/spider.sh >> /www/python/diyikaoshi/splog.log’

计划任务执行的时间设置不用说明,这里使用的是示例每分钟执行一次;

对这条命令行的普通话解释就是: 没分钟执行一次 docker …… /splog.log’ 的命令

这里需要注意的有下面几点:

1. 在命令行要写脚本的全部路径,

2.如果需要执行多个命令则需要用  && 分割

3.在脚本中也要写全路径,如果不写全路径会执行失败

4.命令行中一定不能带  -it 参数, -it 是打开一个新终端,docker你懂得…… ,会直接冷冰冰的告诉你错了

5.如果执行shell脚本,要指定使用的是哪个sh,我这里指名要用  /bin/bash

6.如果shell脚本中涉及到环境变量,或者提示JAVA_HOME is not set,可以在脚本中加上以下命令:export JAVA_HOME=jdk路径

对于其他的需要在宿主机直接执行docker内的命令,可参考上面的这种方式

 

如需转载请注明: 转载自26点的博客

本文链接地址: 在宿主机上执行docker中的脚本

转载请注明:26点的博客 » 在宿主机上执行docker中的脚本

喜欢 (1)
发表我的评论
取消评论

表情
(1)个小伙伴在吐槽
  1. 优化吗
    匿名2021-06-05 13:57 回复