如何在docker中使用source?
How to use source in docker?
我正在尝试在 docker 中使用 virtualenv 以实现部署兼容性。但是执行到这一行就出错了:
CMD source openparty/bin/activate
我不知道。
IIRC,CMD
执行一个单独的 shell 所以 source
即使它确实有效也不会做你需要它做的事情。 source
命令从指定的文件中读取并执行命令。在 virtualenv
的情况下,它定义了一堆环境变量,最值得注意的是 PATH
。相信大家可以简单的把虚拟环境的路径加到PATH
前面,得到类似的效果。
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
而不是必须与 shell 中介搏斗。
我正在尝试在 docker 中使用 virtualenv 以实现部署兼容性。但是执行到这一行就出错了:
CMD source openparty/bin/activate
我不知道。
IIRC,CMD
执行一个单独的 shell 所以 source
即使它确实有效也不会做你需要它做的事情。 source
命令从指定的文件中读取并执行命令。在 virtualenv
的情况下,它定义了一堆环境变量,最值得注意的是 PATH
。相信大家可以简单的把虚拟环境的路径加到PATH
前面,得到类似的效果。
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
而不是必须与 shell 中介搏斗。