乐趣区

使用Docker开发Django项目

背景
当多个 Python 项目且某些包无法兼容时,通常我们使用虚拟环境即可解决。
但是在团队中多个环境其实相对比较固定了,较少变更,如果换电脑或者新人加入需要重新一个一个配置虚拟环境并安装相应的包,会耗费很多时间,而且由于重新安装的包依赖可能会有版本变更导致各种离奇问题。
但事实上 Docker 不仅仅只能用于线上应用部署,我们的开发、调试环境也可以使用。
下面以 Django 项目来举例,为了说明方便此处有以下前提条件和假设:

基础 Docker 已经安装且可用
Docker 已经暴露了远程访问地址(使用 Pycharm 需要),具体方法请自行查阅文档或教材,假如为 tcp://localhost:2375

Docker 基本命令不再详述
Docker 的 Django 环境镜像已经做好,为:myimage

Django 代码目录为 d:\demo

演示环境为 Windows 10(由于 Docker 集成原因,本文不适用于 windows 10 之前版本系统),linux 和 mac os 可能稍有差别
开始使用
普通环境:
python d:\demo\manage.py runserver 0.0.0.0:8000
Docker 启动:
docker run -it –name demo -v d:\demo:/code -p 0.0.0.0:8000:8000 myimage python /code/manage.py runserver 0.0.0.0:8000
在 Pycharm 中无缝使用
添加 Docker 镜像:
打开配置 pycharm > File > Settings > Project > Project Interpreter

选择镜像
修改原 Run 配置:
打开原 Run 配置(和使用本地环境的配置一样,不再赘述)

选择刚才添加的镜像,下面三个复选框保持下图一样

上一步选择镜像后下面会出现 Docker container settings:

点开进行编辑,可以看到此时已经有了 Volume bindings,还需要一个端口映射

再次 Run 就已经是从容器中启动了(可以看到容器 ID),使用 Debug 启动也是可以的

底部还有个选项卡,此可以一键打开 Django shell

问题
Q:使用 Python Console 打开 django shell 报错,错误示例:
ModuleNotFoundError: No module named ‘cms’
A:Pycharm > Settings > Build, Execution, Deployment > Console > Django Console 勾选如下两项,重新打开底部 Python Console 即可

退出移动版