我正在尝试在docker中使用virtualenv来实现部署兼容性。但是当执行到这一行时出错了:
CMD source openparty/bin/activate
我不知道。
答案 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中介搏斗。