使用 Docker 搭建出色的 Python 开发环境
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
每次启动新项目都要重新搭建 Python 开发环境,是不是很麻烦?Docker 可以帮到你!本文将指导你如何使用 Docker 搭建 Python 开发环境,首先从克隆 Git 仓库开始。
先决条件
为了能够跟着操作,请确保您使用的是 VS Code 并且已经安装了 Git。
克隆 Git 仓库
首先,克隆项目的 Git 仓库。在本例中,我正在开发q-lipa 的 API。您可以通过在终端中运行以下命令来完成此操作:git clone https://github.com/Njoguu/qlipa-API.git
建立环境
首先,请确保您的计算机上已安装 Docker。安装说明可在 Docker网站上找到。我已经安装好了。
接下来,导航到该目录并创建一个名为“requirements.txt”的新文件,用于存放应用程序所需的所有依赖项。此外,创建一个名为“src”的目录,用于存储 Python 文件。
创建一个示例 main.py 文件,作为应用程序的“占位符”。您可以从FastAPI 的教程指南中获取代码。
要在项目中使用 Docker,首先需要在项目根目录下创建一个名为“Dockerfile”的文件。Dockerfile 通常包含安装依赖项、将文件复制到镜像以及配置环境的指令。创建 Dockerfile 后,即可使用它来构建 Docker 镜像,然后使用该镜像运行包含应用程序的容器。
接下来,将 Dockerfile 所需的软件包(目前包括 Uvicorn 和 FastAPI)添加到 requirements.txt 文件中。完成后,您可以通过将以下代码添加到 Dockerfile 来构建 Docker 镜像。
# Use the latest Python Version as the base image
FROM python:3.12.0a6-slim-buster
# Setup the working directory for the container
WORKDIR /code
# Copy the requirements file to the container
COPY ./requirements.txt ./
# Install the Python dependencies using Python
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code to the container
COPY ./ ./
# Setup the command to run when the container starts
CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
构建 Docker 镜像
导航到仓库目录,然后在终端中运行以下命令来构建 Docker 镜像:
docker build -t <your-image-name> .
这将为您的 Python 开发环境构建 Docker 镜像。
运行 Docker 容器
现在 Docker 镜像已经构建完成,您可以运行 Docker 容器并开始处理您的 Python 项目。
在终端中运行以下命令:docker run -d -p 8000:8000 <your-image-name>
此命令启动 Docker 容器,将本地计算机上的 8000 端口映射到容器中的 8000 端口,并运行应用程序。
注册文件更改 - 使用 Docker 卷
这一切看起来都很棒,但存在一个问题。当你修改代码并刷新浏览器中的应用后,新代码/新更改并不会立即生效。这是因为代码位于你的本地计算机上,而应用本身运行在容器内。
为了进行更改并使应用程序自动注册这些更改,我们使用卷。
请参阅 👉什么是卷?
您可以通过对运行 Docker 镜像的代码进行一些更改来实现这一点。请改用以下代码:
docker run -d -p 8000:8000 -v $(pwd):/code <your-image-name>
这段代码会启动一个容器,并将本地机器上的 8000 端口映射到容器中的 8000 端口。它还会将主机上的当前工作目录挂载到code容器中的目录。
重要提示:您可能会遇到一个错误,该错误通常发生在您尝试使用包含大写字母的仓库名称运行 Docker 命令时。(我刚刚了解到 Docker 仓库名称必须全部小写)。我在 StackOverflow 上找到了解决方法。
如果遇到错误,请使用以下代码:
docker run -d -p 8000:8000 -v "$(pwd):/code" <your-image-name>
当您成功运行应用程序并对代码进行更改时,应用程序将自动注册更改并显示更改内容。
在 Docker 容器中使用 IDE
不过,问题依然存在。我们无法在 IDE 中直接编写代码,因为 IDE 无法识别应用程序的依赖项。您可能还记得,我们没有在本地机器上安装这些依赖项,而是在容器内安装的。我们真正想要的是将 IDE 安装在 Docker 容器内。
要实现这一点,你需要两个 VS Code 扩展:Docker扩展和Dev Containers扩展。安装这两个扩展后,在左下角你会看到一个小按钮,鼠标悬停在上面时会显示“打开远程窗口”。点击它。
从选项中可以看到,有多种方式可以连接到远程容器。但就我们的情况而言,由于我们已经有一个在后台运行的容器,因此请点击“连接到正在运行的容器”,然后选择您正在处理的项目所在的容器。
这将打开一个新的 VS Code 实例,该实例位于我们创建的 Docker 容器内。
由于这是一个全新的环境,您需要重新安装所有必要的扩展程序才能在项目中使用。这里,我安装的是 Python 扩展程序。
我们现在会编程了!
结论
在这篇文章中,我向你展示了如何使用 Docker 搭建一个强大的 Python 开发环境。具体步骤包括:克隆 Git 仓库、构建 Docker 镜像、运行 Docker 容器、使用 Docker 卷以及在 Docker 容器内使用 IDE。
您可以轻松搭建一个可在多个项目中使用的统一 Python 开发环境。祝您编码愉快!
不过,这个项目之后需要用到多个容器,这时就需要用到 Docker Compose 了。它是一个用于定义和运行多容器应用程序的工具。敬请期待,我们将教您如何设置它!
文章来源:https://dev.to/njoguu/setting-up-a-great-python-dev-environment-with-docker-2b01

