docker 运行多条命令失败的解决方案

版本:
Docker Server Version: 1.12.5

背景:
项目用到了celery,需要在我们项目跑起来之前,保证celery服务是开启的。

开启celery: 

celery -A celery_task worker -B -Q celery,lazy_queue
开启我们的服务:
python /data/xxxx/myapp/main.py --port=9999
谷歌到只需要两个命令用&&连接即可:
docker run -itd -v /data/xxxx/myapp:/data/xxxx/myapp -v /data/logs/myapp:/data/logs/myapp -v /etc/localtime --link myredis1:myredis1 --name myapp1 -p 9999:9999  myapp:v1  celery -A celery_task worker -B --workdir /data/xxxx/myapp/mycelery && python /data/xxxx/myapp/main.py --port=9999

竟然报错了,环境找不到tormysql库?咦明明安装了呢,而且进入docker环境也能import tormysql成功。
为何会报这种 ImportError: No module named tormysql?
感觉是python有很多个,然后用了一个没安装环境的。
进入docker,whereis python: 
[root@edd1425beb55 /]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python2.7-config /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7
 可怕果然有很多python环境,修改我们的docker run指令:

docker run -itd -v /data/xxxx/myapp:/data/xxxx/myapp -v /data/logs/myapp:/data/logs/myapp --link myredis1:myredis1 --name myapp1   -v /etc/localtime:/etc/localtime -p 9999:9999 myapp:v1  celery -A celery_task worker -B --workdir /data/xxxx/myapp/mycelery && /usr/bin/python2.7 /data/xxxx/myapp/main.py --port=9999

然而并没有什么卵用。还是报找不到tormysql。
我灵机一动,这个python不会是宿主机的python吧,然后在宿主机pip install tormysql,我擦啦,测试通过。
啧啧啧,这第二个命令竟然用的是宿主机的python!!!

用sh -c ‘xxx && xxx’,在这个基础上,我们也改成如此 sh -c 'xxx | xxx': 
docker run -itd -v /data/xxxx/myapp:/data/xxxx/myapp -v /data/logs/myapp:/data/logs/myapp --link myredis1:myredis1 --name myapp1 -v /etc/localtime:/etc/localtime -p 9999:9999  myapp:v1   sh -c  '/usr/bin/python2.7 /data/xxxx/myapp/main.py --port=9999  | celery -A celery_task worker -B  -Q lazy_queue,celery -Ofair --workdir /data/xxxx/myapp/mycelery'
运行成功。


以上




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值