使用 Docker+WSL2 优化 Python 开发的工作流程
Optimizing the workflow for Python development using Docker+WSL2
我每天都使用不同的语言,当我的机器被许多特定语言弄得乱七八糟时,我讨厌它 installations/programs/environments。因此,我目前正在探索使用 Docker+WSL2 作为我的不同项目的运行时是否足以保持我的主机干净而不会产生太多开销。
Python示例中我当前的工作流程:
- 在主机上创建 Python 项目
- 运行 Docker容器基于合适的Python镜像并将项目目录挂载到容器
- 在项目目录中创建一个虚拟环境,并在容器中使用bash安装所需的包
- 运行容器中使用bash的项目
这是我发现保持 Docker 图像通用的最简单方法,即无需在 Docker 文件中预先安装项目特定的包。这种方法的一个缺点当然是虚拟环境最终位于主机上。
其他人使用 docker commit
这不是最佳实践,或者在 Docker 文件中安装所需的软件包,这导致 运行 全部的巨大 Docker 文件我的 Python 个项目。
您是否知道开销更少的更好工作流程或有缓解虚拟环境文件夹问题的想法?
您不需要让您的 Docker 图片通用,在大多数情况下一张图片对应一个项目。我宁愿创建一个基础映像并将其推送到注册表,这样您就可以在需要时快速构建。
如果您为所有项目使用一个图像以便您的服务可以通信,我强烈建议使用 docker-compose 配置。
虽然在较小的 Python 项目上我更喜欢 conda 环境,因为它们重量轻且易于设置/删除,而且 https://conda-forge.org/ 可以通过 conda 获取丢失的二进制文件。
我每天都使用不同的语言,当我的机器被许多特定语言弄得乱七八糟时,我讨厌它 installations/programs/environments。因此,我目前正在探索使用 Docker+WSL2 作为我的不同项目的运行时是否足以保持我的主机干净而不会产生太多开销。
Python示例中我当前的工作流程:
- 在主机上创建 Python 项目
- 运行 Docker容器基于合适的Python镜像并将项目目录挂载到容器
- 在项目目录中创建一个虚拟环境,并在容器中使用bash安装所需的包
- 运行容器中使用bash的项目
这是我发现保持 Docker 图像通用的最简单方法,即无需在 Docker 文件中预先安装项目特定的包。这种方法的一个缺点当然是虚拟环境最终位于主机上。
其他人使用 docker commit
这不是最佳实践,或者在 Docker 文件中安装所需的软件包,这导致 运行 全部的巨大 Docker 文件我的 Python 个项目。
您是否知道开销更少的更好工作流程或有缓解虚拟环境文件夹问题的想法?
您不需要让您的 Docker 图片通用,在大多数情况下一张图片对应一个项目。我宁愿创建一个基础映像并将其推送到注册表,这样您就可以在需要时快速构建。
如果您为所有项目使用一个图像以便您的服务可以通信,我强烈建议使用 docker-compose 配置。
虽然在较小的 Python 项目上我更喜欢 conda 环境,因为它们重量轻且易于设置/删除,而且 https://conda-forge.org/ 可以通过 conda 获取丢失的二进制文件。