使用Docker开发Django项目

背景

当多个Python项目且某些包无法兼容时,通常我们使用虚拟环境即可解决。

但是在团队中多个环境其实相对比较固定了,较少变更,如果换电脑或者新人加入需要重新一个一个配置虚拟环境并安装相应的包,会耗费很多时间,而且由于重新安装的包依赖可能会有版本变更导致各种离奇问题。

但事实上Docker不仅仅只能用于线上应用部署,我们的开发、调试环境也可以使用。

下面以Django项目来举例,为了说明方便此处有以下前提条件和假设:

  1. 基础Docker已经安装且可用
  2. Docker已经暴露了远程访问地址(使用Pycharm需要),具体方法请自行查阅文档或教材,假如为tcp://localhost:2375
  3. Docker基本命令不再详述
  4. Docker的Django环境镜像已经做好,为:myimage
  5. 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镜像:

  1. 打开配置 pycharm > File > Settings > Project > Project Interpreter

  1. 选择镜像


修改原Run配置:

  1. 打开原Run配置(和使用本地环境的配置一样,不再赘述)

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

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

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

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

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

问题

Q:使用Python Console打开django shell报错,错误示例:

ModuleNotFoundError: No module named 'cms'

A:Pycharm > Settings > Build, Execution, Deployment > Console > Django Console 勾选如下两项,重新打开底部Python Console即可


张豪飞
个人心得
436 声望
2 粉丝
0 条评论
推荐阅读
django数据库自动重连
注意仅支持pymysql,使django使用pymysql需要先安装包并在settings.py所在目录的__init__.py增加如下代码: {代码...}

薛定谔的猫2阅读 4.8k评论 2

基于Sanic的微服务基础架构
使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力。有些异步框架Tornado、Twisted、Gevent 等就是为了解决性能问题。这些框架在性能上有些提升,但是也出现了各种古怪的问题难以...

jysong6阅读 3.9k评论 3

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许4阅读 2.2k

又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。

良许5阅读 1.8k

FastAPI性能碾压Flask?
不止一次的听过,FastAPI性能碾压Flask,直追Golang,不过一直没有测试过,今天闲着没事测试一下看看结果。不知道是哪里出了问题,结果大跌眼镜。

二毛erma02阅读 10.1k评论 3

封面图
突破难关:Docker镜像和容器的区别以及构建的最佳实践
Docker 可谓是开启了容器化技术的新时代,现在无论大中小公司基本上都对容器化技术有不同程度的尝试,或是已经进行了大量容器化的改造。伴随着 Kubernetes 和 Cloud Native 等技术和理念的普及,也大大增加了业务...

张晋涛4阅读 1.1k

封面图
Aliyun-使用Docker方式安装Jenkins
之前自己在阿里云ECS上面安装了Jekins(安装jenkins的文章),最近因为服务器中了挖矿木马于是准备重新安装一下,但是想到每次安装jenkins都要手动安装jdk、maven、docker、kubectl,感觉好麻烦,于是使用官方推荐...

Awbeci2阅读 2.1k

436 声望
2 粉丝
宣传栏