随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依赖和被依赖关系,这就会带来一个世界性难题,项目部署的时候需要运维来手动配制服务之间通信的协议和地址,稍有不慎就会导致服务异常,同时如果服务器因为坏道或者其他原因导致更换物理机,重新部署新环境的成本也会非常之高。因此,我们就会寄希望于Docker这种的容器技术可以让我们构建产品所需要的所有的服务能够迅速快捷的重新部署,并且可以根据需求做横向扩展,且能够保证稳定的容灾性,在出现问题的时候可以利用守护进程自动重启或者启动容灾备份。
本次我们将在Win10环境下利用Docker容器技术来对前后端分离项目Django+Vue.js进行打包,分别定制化对应的项目镜像,应对快速部署以及高扩展的需求。
首先当然是安装Docker,可以参照这篇视频攻略:win10安装配置Docker并更换国内源[1]。
随后在宿主机安装gunicorn,容器内我们用异步的方式来启动Django
Django项目配置settings.py对应的应用:
这里注意一点,ip必须是0.0.0.0,不要写成127.0.0.1,否则外部环境会访问不到容器内的服务,接下来在项目的根目录编写好依赖列表:requirements.txt
这里需要注意的是,某些依赖的库最好用==标注出小版本,因为一会在容器内通过pip安装的时候,系统有可能会自动帮你安装最新版导致一些依赖报错。
下面就是老套路,在根目录编写DockerFile文件:
本次的基础镜像我们选择3.7,毕竟2020年了,与时俱进还是很必要的。
ok,万事俱备,运行命令对项目进行打包:
这里注意一点就是要进入到项目的目录下执行
这里我的项目目录是mydjango。
第一次打包编译的时候,可能时间会长一点,耐心等一会就可以了,如果中途遇到网络错误导致的失败,反复执行打包命令即可,此时运行命令:
可以看到编译好的镜像大概有1g左右:
随后启动镜像服务:
这里我们用端口映射技术将宿主机的5000端口映射到容器内的8000端口,访问Django服务,http://容器ip:5000
后端搞定,接下来轮到我们的前端服务vue.js了,首先打开vue项目的打包配置文件config/index.js:
将打包目录改成相对路径,同时注意路由的配置,如果曾经修改为history模式记得改回hash:
准备工作完毕,在vue的项目根目录下编写Dockerfile:
这里我们选择体积更小的alpine镜像。
随后进入项目的根目录,执行打包命令:
这里我的前端目录是myvue
系统会自动根据脚本进行安装依赖,第一次也需要等待一段时间。
打包完成后,执行:
可以看到前端镜像的体积要小一点:
运行前端服务:
同样使用端口映射,这次宿主机使用8081,当然了,如果需要可以根据喜好进行修改。
访问Vue.js服务,http://容器ip:8081
至此,通过Docker的容器技术,我们就将前后端两大服务都分别部署好了,过程并不复杂,但是意义却是里程碑式的,携此两大镜像,左牵Django,右擎Vue.js,如果哪天需要横向扩容,只需短短几分钟,我们就可以在新服务器上做到“拎包入住”,灵活方便。最后奉上项目文件,与君共勉:https://gitee.com/QiHanXiBei/mydjango https://gitee.com/QiHanXiBei/myvue
引用链接
win10安装配置Docker并更换国内源:https://www.bilibili.com/video/BV1pE411x72w/
领取专属 10元无门槛券
私享最新 技术干货