【问题标题】:Optimizing the workflow for Python development using Docker+WSL2使用 Docker+WSL2 优化 Python 开发的工作流程
【发布时间】:2021-02-10 08:05:41
【问题描述】:

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

以 Python 为例,我当前的工作流程:

  1. 在主机上创建 Python 项目
  2. 根据相应的 Python 镜像运行 Docker 容器,并将项目目录挂载到容器中
  3. 在项目目录中创建虚拟环境,并在容器中使用 bash 安装所需的包
  4. 在容器中使用 bash 运行项目

这是我发现保持 Docker 映像通用的最简单方法,即无需在 Dockerfile 中预先安装项目特定的包。这种方法的一个缺点当然是虚拟环境最终在主机上。

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

您是否知道开销更少的更好的工作流程或有减轻虚拟环境文件夹问题的想法?

【问题讨论】:

    标签: python docker workflow windows-subsystem-for-linux


    【解决方案1】:

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

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

    虽然在较小的 Python 项目中我更喜欢 conda 环境,因为它们轻量级且易于设置/删除,另外还有 https://conda-forge.org/ 可以通过 conda 获取丢失的二进制文件。

    【讨论】:

    • 好点。我不喜欢的主要一点是,每当您更改所需的包时,您都必须接触项目特定的 Dockerfile,然后重新构建它,然后重新运行它。还是我错过了什么?
    • 好的,但是如果您不使用 Docker,则无论如何都需要运行 pip install,我看不出有太大的区别。这两个命令只需要 1 行。如果你以 root 身份执行容器,你也可以在那里 pip install ,所以它不会破坏你的工作流程(尽管下次你仍然需要重建)
    • 我修改了您的解决方案,即使我并不完全满意,我也会改用它。谢谢!
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2016-11-14
    相关资源
    最近更新 更多