如何在docker中使用source?

时间:2015-03-06 02:55:18

标签: django shell docker virtualenv

我正在尝试在docker中使用virtualenv来实现部署兼容性。但是当执行到这一行时出错了:

CMD source openparty/bin/activate

我不知道。

2 个答案:

答案 0 :(得分:3)

IIRC,CMD执行一个单独的shell,因此source即使它确实有效,也不会执行您需要的操作。 source命令从指定文件中读取并执行命令。在virtualenv的情况下,它定义了一堆环境变量,最值得注意的是PATH。我相信你可以简单地将虚拟环境的路径添加到PATH的前面并获得类似的效果。

答案 1 :(得分:0)

activate脚本仅用于获取为该virtualenv配置的交互式shell。您可以使用像...这样的Dockerfile来实现这一目标。

CMD ["bash", "--rcfile", "openparty/bin/activate"]

但是如果你只是想在你的virtualenv的上下文中运行一个Python命令,那么直接引用virtualenv&#39s的python就更简洁了:

ENTRYPOINT ["openparty/bin/python", "openparty/bin/manage.py"]

然后你可以调用像

这样的命令
docker run --rm -P openparty_image runserver

而不是与shell中介搏斗。