Python 使用Docker+;WSL2

Python 使用Docker+;WSL2,python,docker,workflow,windows-subsystem-for-linux,Python,Docker,Workflow,Windows Subsystem For Linux,我每天使用不同的语言,讨厌我的机器被许多特定语言的安装/程序/环境弄得乱七八糟。因此,我目前正在探索使用Docker+WSL2作为我的不同项目的运行时是否足以保持主机干净,而不会产生太多开销 Python示例中我当前的工作流: 在主机上创建Python项目 基于适当的Python映像运行Docker容器,并将项目目录装载到容器中 在项目目录中创建虚拟环境,并在容器中使用bash安装所需的包 在容器中使用bash运行项目 这是我发现的保持Docker映像通用性的最简单的方法,即不在Dockerfi

我每天使用不同的语言,讨厌我的机器被许多特定语言的安装/程序/环境弄得乱七八糟。因此,我目前正在探索使用Docker+WSL2作为我的不同项目的运行时是否足以保持主机干净,而不会产生太多开销

Python示例中我当前的工作流:

  • 在主机上创建Python项目
  • 基于适当的Python映像运行Docker容器,并将项目目录装载到容器中
  • 在项目目录中创建虚拟环境,并在容器中使用bash安装所需的包
  • 在容器中使用bash运行项目
  • 这是我发现的保持Docker映像通用性的最简单的方法,即不在Dockerfile中预先安装特定于项目的包。这种方法的一个缺点当然是虚拟环境最终会出现在主机上

    其他人使用
    docker commit
    ,这并不是最佳实践,或者在Dockerfile中安装所需的包,这会导致运行所有Python项目的巨大Dockerfile


    您是否知道一个开销更小的更好的工作流,或者有想法来缓解虚拟环境文件夹的问题?

    您不需要保持Docker映像的通用性,在大多数情况下,一个映像用于一个项目。我宁愿创建一个基本映像并将其推送到注册表中,这样您就可以在需要时快速构建

    如果您为所有项目使用一个映像,以便您的服务能够通信,我强烈建议使用docker compose配置


    虽然在较小的Python项目上,我更喜欢conda环境,因为它们重量轻,易于设置/删除,而且可以通过conda获取缺少的二进制文件。

    您不需要保持Docker映像的通用性,在大多数情况下,一个映像用于一个项目。我宁愿创建一个基本映像并将其推送到注册表中,这样您就可以在需要时快速构建

    如果您为所有项目使用一个映像,以便您的服务能够通信,我强烈建议使用docker compose配置


    虽然在较小的Python项目中,我更喜欢conda环境,因为它们重量轻,易于设置/删除,而且可以通过conda获取缺少的二进制文件。

    这是一个好的方面。我不喜欢的主要一点是,无论何时更改所需的包,都必须接触特定于项目的DockerFile,然后重建它,然后重新运行它。或者我遗漏了什么?好吧,但如果你不使用Docker,你无论如何都需要运行pip安装,我看不出有什么不同。两个命令仅占用一行。如果您以root用户身份执行容器,也可以在那里进行pip安装,这样就不会中断您的工作流程(尽管下次您仍需要重建)。我对您的解决方案进行了修改,即使我不完全满意,也会切换到它。谢谢好的观点。我不喜欢的主要一点是,无论何时更改所需的包,都必须接触特定于项目的DockerFile,然后重建它,然后重新运行它。或者我遗漏了什么?好吧,但如果你不使用Docker,你无论如何都需要运行pip安装,我看不出有什么不同。两个命令仅占用一行。如果您以root用户身份执行容器,也可以在那里进行pip安装,这样就不会中断您的工作流程(尽管下次您仍需要重建)。我对您的解决方案进行了修改,即使我不完全满意,也会切换到它。谢谢