赞
踩
目标:使用容器化技术快速部署AI应用进行开发。
注意:从 Docker 19.03 开始,Docker 引入了对 NVIDIA GPU 的原生支持,因此若AI要调用GPU算力的话docker版本也是有要求的,后面博客测试。
当然本篇博客还没设计到GPU的调用,主要Pycharm加Anaconda的方案用习惯了,现在改用docker进行部署,不知道怎么连接Pycharm,毕竟IDE都没有还开发个P的AI(大佬除外)。这里由于我以后要做AI部署到云服务器的项目得要个后端,就以django这个后端框架的部署为例了。
主要是给出一直比较舒服的开发方案,即通过docker将项目文件夹挂载到宿主机中,而编译环境在docker容器中,Pycharm则调用docker容器的编译环境,来看代码,并且通过Pycharm中的Terminal对容器的环境进行管理。
这样既可以享受到Pycharm的操作,又可以获得docker优秀的环境迁移的方便性。
(远程ssh部署调试的话先鸽,因为我还是建议在本地完成后直接通过容器的方式快速部署到其他远端的宿主机上,主要是我还没买云GPU服务器)
Docker 技术与 PyCharm 的整合:加速未来 AI 技术的快速部署
在人工智能 (AI) 的快速发展过程中,技术工具的整合与优化不断推动着开发效率的提升。Docker,作为一种开源的容器化平台,提供了一种高效、轻量级的方法来封装和运行应用,确保了应用在不同环境中的一致性和可移植性。而 PyCharm,作为一款广受欢迎的 Python 开发环境,其对 Docker 的支持使得开发者能够在一个集成的环境中更便捷地开发、测试和部署 AI 应用。
环境一致性和便捷性:Docker 容器确保了从开发到生产环境的无缝过渡,每个容器都包括用于运行软件的完整和标准化的运行时环境。这解决了常见的“在我机器上可以运行”的问题,大大减少了环境配置导致的延误。
快速迭代与部署:通过使用 Docker,AI 开发者可以快速地打包他们的应用和所有依赖,简化部署过程。PyCharm 的 Docker 集成允许开发者直接在 IDE 中管理容器,从而提高开发速度和迭代效率。
可扩展性和资源管理:Docker 容器的轻量级特性使得在不同的硬件和云环境中部署和扩展 AI 应用变得更加简单和成本效率。这对于需要大量计算资源的 AI 模型训练和推理尤为重要。
多版本和实验管理:AI 开发常常需要测试多个版本的模型和算法。Docker 容器可以轻松管理不同版本的 AI 应用,而 PyCharm 提供的工具可以帮助开发者跟踪不同实验的性能。
安全性:Docker 提供了隔离的环境,可以有效地分隔不同应用和实例,增强了安全性。这对于处理敏感的 AI 数据尤其重要。
注意本章解释的部署:django的工程文件是处于容器外的不是在容器里面,这样方便工程代码的更新(以及后续的自动化部署),以及没安装docker desktop 安装指南的先安装了再说。
准备好配置好的,docker-compose.yml , Dockerfile , requirements.txt , 以及django的工程文件,(特别注意文件之间的目录关系!)
配置文件0积分下载CSDN偷改积分了叫我。
然后在 docker-compose.yml 目录下输入
docker-compose up -d
若安装有问题要全删除使用命令
bash docker-compose down
还是删除不了则使用bash docker rm -f 容器ID或名称
成功后你可以看到如下,说明成功的部署上了django的容器
注意由于我在Dockerfile中的配置,我是打算连接上pycharm后手动控制开启django服务的,因此容器启动后是无法自动开启django工程的,如果你确定你的django工程代码写好了,并且想让容器开启就运行,你可以按照下面代码这样修改 Dockerfile 的内容
# 使用官方 Python 3.7 运行时作为父镜像 FROM python:3.7 # 设置容器内的工作目录为 /app WORKDIR /app # 将当前目录内容复制到位于 /app 中的容器中 COPY . /app # 安装 requirements.txt 中指定的任何需要的程序包 RUN pip install --no-cache-dir -r requirements.txt # 使端口 8000 可用于外界访问 EXPOSE 8000 # 定义环境变量 ENV NAME World # 在容器启动时运行 manage.py, (完成调试后开启!) CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
然后用以下命令来重新构建服务的镜像并启动容器:
docker-compose up -d --build
以我提供的代码为例,修改后这样启动,那么在镜像开启后,就会自动开启django服务并,这时用浏览器访问 http://localhost:8000/
就可以看到成功的页面了
在 PyCharm 中配置 Docker 容器作为 Python 解释器并不需要设置 Docker 的 SSH 服务。您可以直接通过 PyCharm 的内置 Docker 集成来实现。请确保您已经在您的 Windows 机器上安装了 Docker Desktop,并且 Docker 正在运行。然后,您可以按照以下步骤来配置 Docker 容器作为 Python 解释器:
File
-> Settings
(或使用快捷键 Ctrl+Alt+S
)。Build, Execution, Deployment
-> Docker
。+
图标来添加一个新的 Docker 配置。Docker API URL
中,如果您使用的是 Docker Desktop,默认应该可以使用 unix:///var/run/docker.sock
(Linux)或 npipe:./pipe/docker_engine
(Windows)。通常 PyCharm 会自动检测并填写。Apply
保存设置。Project: [您的项目名称]
-> Python Interpreter
。Add
。Docker
。Configuration
下拉菜单中选择您刚刚配置的 Docker 服务。Image name
输入框中,输入您的 Django 应用的 Docker 镜像名称。这个名称应该与您的 Dockerfile
中定义的镜像名称相对应。/usr/bin/python3
或相似路径)。OK
保存配置。
当您在 PyCharm 中遇到无法连接到 Docker 守护进程的问题时,通常是因为 Docker 没有正确设置来允许通过 TCP 连接,或者 Docker 守护进程根本就没有运行。以下是一些检查和解决步骤:
打开命令提示符或 PowerShell:您可以在 Windows 中搜索 “cmd” 或 “PowerShell”,然后打开它。
运行 Docker 版本检查命令:
docker --version
这将显示 Docker 的版本,如果 Docker 没有运行或没有正确安装,这个命令可能会报错。
检查 Docker 服务状态:
docker info
如果 Docker 正在运行,这个命令会显示 Docker 的详细信息。如果 Docker 没有运行,您将看到一个错误消息,提示 Docker 守护进程没有运行。
默认情况下,Docker 可能不允许通过 TCP 连接。您需要确保 Docker 配置为允许远程 API 访问。对于 Docker Desktop 用户:
打开 Docker Desktop:点击 Windows 任务栏中的 Docker 图标。
设置:在 Docker Desktop 的界面上,点击设置图标(通常位于右上角)。
选择 General(常规):确保勾选了 “Expose daemon on tcp://localhost:2375 without TLS”。这允许无 TLS 的本地 TCP 连接。
应用 & 重启:更改设置后,确保点击应用 & 重启,使设置生效。
在确保 Docker 守护进程运行并配置了 TCP 连接后,返回到 PyCharm 进行如下操作:
重试连接:回到 Settings
-> Build, Execution, Deployment
-> Docker
,重新尝试连接。
检查防火墙设置:确保没有防火墙规则阻止了从 PyCharm 到 Docker 的连接。
通过以上步骤,您应该能够解决 PyCharm 无法连接到 Docker 守护进程的问题。如果问题依然存在,可能需要进一步检查网络设置或咨询 Docker/PyCharm 的官方支持。
这样,就可以在 PyCharm 中利用 Docker 容器作为 Python 解释器,无需配置 SSH,便于在相同的开发环境中运行和调试您的 Django 应用。
点击确定后,可观察到docker desktop中出现pycharm连接用的对应的docker 容器的启动
Path mappings
是用来链接本地开发环境中的文件路径和 Docker 容器内部的文件路径。这在进行源代码调试时尤为重要,因为它确保了 PyCharm 能够正确地对应到源代码位置。
如果您决定需要配置路径映射,可以按照以下步骤操作:
打开 PyCharm 的 Settings/Preferences。
导航到 Project: [您的项目名称]
-> Python Interpreter
。
在 Python 解释器页面,点击您配置的 Docker 解释器旁边的齿轮图标,选择 Show All...
。
在弹出的窗口中,选择您的 Docker 解释器,然后点击 Edit
按钮(铅笔图标)。
在 Interpreter Path
下方,您会看到 Path mappings
的选项。点击 ...
来添加或编辑映射。
您需要添加本地路径以及对应的容器内路径。例如:
C:\Users\YourName\PycharmProjects\YourProject
/app
(假设您的 Docker 容器中项目位于 /app
)确认添加后,点击 OK
保存设置。
通过正确配置路径映射,您将能够更顺畅地在 Docker 容器中使用 PyCharm 进行开发和调试。如果您在配置过程中遇到任何问题,可以重新检查您的 Docker 容器设置或咨询相关文档。
如果想在 PyCharm 的 Terminal 中直接控制 Docker 容器,需要配置 PyCharm 使其 Terminal 使用 Docker 容器的 shell。以下是如何在 PyCharm 中设置这一功能的步骤:
首先,打开 PyCharm 的设置或首选项:
docker exec -it <container_name_or_id> /bin/bash
<container_name_or_id>
替换为您的 Django 容器的名称或 ID。如果您的容器使用的是不同的 shell(比如 /bin/sh
),请相应调整。"C:\Program Files\Docker\Docker\resources\bin\docker.exe" exec -it f_cloud-django-1 /bin/bash
如下可看到在pycharm中的Terminal与直接进入docker后的效果相同
看起来您遇到了在 PyCharm 中设置 Terminal 连接 Docker 容器时的问题。出现这种情况可能有几个原因:
首先,请确保 Docker 容器 f_cloud-django-1
正在运行。您可以使用以下命令来检查容器的状态:
docker ps
这会列出所有正在运行的容器。如果您的容器没有在运行,您需要先启动它。
如果您在 Windows 系统上运行 PyCharm,并且 Docker 命令没有在系统的 PATH 环境变量中,PyCharm 可能无法直接调用 docker
命令。您可以尝试在命令前指定 Docker 的完整路径。例如:
"C:\Program Files\Docker\Docker\resources\bin\docker.exe" exec -it f_cloud-django-1 /bin/bash
这里的路径 "C:\Program Files\Docker\Docker\resources\bin\docker.exe"
是假设的,根据您的实际安装路径调整。
在 Windows 上,有时候直接在 PyCharm 的 Terminal 设置中使用 docker exec
命令会遇到问题,因为 Windows 和 Unix/Linux 系统的命令行环境有所不同。您可以尝试使用以下方法之一来解决这个问题:
使用 Windows Subsystem for Linux (WSL):
如果您已经在 Windows 上安装了 WSL,可以尝试通过 WSL 来运行 Docker 命令:
wsl docker exec -it f_cloud-django-1 /bin/bash
使用 PowerShell 脚本:
您可以创建一个 PowerShell 脚本来启动 Docker 容器的 shell,然后在 PyCharm 中设置该脚本为 Terminal 的启动命令。
PyCharm 提示查看 idea.log
文件以获取详细信息。您可以按照提示操作,通过 “Help | Show Log in Explorer” 查看日志文件,里面可能包含更具体的错误信息帮助诊断问题。
如果上述步骤仍然不能解决问题,您可能需要检查更多的配置细节或者考虑联系技术支持。同时,确保 PyCharm 和 Docker 均更新到最新版本,以避免可能的兼容性问题。
完成所有部署后,以后开发的是否就像下面的流程
1.打开docker desktop 确保django容器启动
2.打开pycharm进行编辑代码(还是IDE香,用vim什么的就算了,难度太大…)
3.使用Terminal进行django的启动,以及各类包的管理
(这样,通过安装例如numpy,opencv等的包到镜像中,以后就可以很方便的直接通过拷贝镜像的方法迁移环境了,比使用anaconda要更加的方便, 当然有些AI程序由于是GPU调用的原因需要宿主机安装,这个以后讨论)
如下图就是在Terminal中运行 Django 开发服务器命令的效果:
python manage.py runserver 0.0.0.0:8000
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。