【问题标题】:How to use source in docker?如何在 docker 中使用源代码?
【发布时间】:2015-03-06 02:55:17
【问题描述】:

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

CMD source openparty/bin/activate

我不知道。

【问题讨论】:

    标签: django shell docker virtualenv


    【解决方案1】:

    IIRC,CMD 执行一个单独的 shell,所以 source 不会做你需要它做的事情,即使它确实有效。 source 命令从指定文件读取并执行命令。对于virtualenv,它定义了一堆环境变量,最值得注意的是PATH。相信你可以简单的把虚拟环境的路径加到PATH前面,也能得到类似的效果。

    【讨论】:

    • ENV PATH $PATH:openparty/bin/activate 你是说这个吗?成功了,谢谢!
    • 我会期待ENV PATH openparty/bin:$PATH,因为PATH 变量是一个目录列表,而activate 是一个shell 脚本。
    • ENV PATH $PATH:openparty/bin/有区别吗?
    【解决方案2】:

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

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

    但是如果你只是想在你的 virtualenv 的上下文中运行一个 Python 命令,直接引用 virtualenv 的 python 会更简洁:

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

    然后你可以调用类似的命令

    docker run --rm -P openparty_image runserver
    

    而不必与壳中介搏斗。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多